首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将Unix时间戳转换为日期字符串

将Unix时间戳转换为日期字符串
EN

Stack Overflow用户
提问于 2010-07-15 03:41:06
回答 10查看 184.7K关注 0票数 149

有没有一种从Unix命令行将Unix时间戳转换为日期的快速、简单的方法?

date也许可以工作,只是指定每个元素(月、日、年、小时等)比较笨拙,而且我不知道如何让它正常工作。似乎有一种更简单的方法, - 我错过了什么吗?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-07-15 03:54:35

使用GNU的date,您可以这样做:

代码语言:javascript
复制
date -d "@$TIMESTAMP"
代码语言:javascript
复制
# date -d @0
Wed Dec 31 19:00:00 EST 1969

(来自:BASH: Convert Unix Timestamp to a Date)

在OS X上,使用date -r

代码语言:javascript
复制
date -r "$TIMESTAMP"

或者,使用strftime()。它不能直接从shell获得,但您可以通过gawk访问它。%c说明符以与区域设置相关的方式显示时间戳。

代码语言:javascript
复制
echo "$TIMESTAMP" | gawk '{print strftime("%c", $0)}'
代码语言:javascript
复制
# echo 0 | gawk '{print strftime("%c", $0)}'
Wed 31 Dec 1969 07:00:00 PM EST
票数 214
EN

Stack Overflow用户

发布于 2010-07-15 04:01:53

date -d @1278999698 +'%Y-%m-%d %H:%M:%S',其中@后面的数字是以秒为单位的数字

票数 73
EN

Stack Overflow用户

发布于 2013-01-01 11:24:24

正如@TomMcKenzie在对另一个答案的评论中所说的那样,自Unix时代以来,date -r 123456789可以说是一种更常见(即更广泛地实现)的简单解决方案,时间以秒为单位,但不幸的是,没有通用的保证便携解决方案。

在许多类型的系统上,-d选项的含义与GNU Date的--date扩展完全不同。不幸的是,GNU Date不能像其他实现一样解释-r。因此,不幸的是,您必须知道您使用的是哪个版本的date,而且许多较旧的Unix date命令都不支持这两个选项。

更糟糕的是,POSIX date既不能识别-d,也不能识别-r,并且在任何命令中(据我所知)都没有提供从命令行格式化Unix时间的标准方法(因为POSIX Awk也没有strftime())。(您不能使用touch -tls,因为前者不接受从Unix时代起以秒为单位的时间。)

注意:虽然Brian Kernighan直接提供的一个True Awk现在有内置的strftime()函数和一个systime()函数来返回Unix时代以来的当前时间(以秒为单位),因此Awk解决方案可能是最便携的。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3249827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档