是否有一种快速,单行的方式将Unix时间戳转换为Unix命令行中的日期?
date
可能有效,除非指定每个元素(月,日,年,小时等)相当尴尬,我无法弄清楚如何让它正常工作。似乎可能有一种更简单的方法 - 我错过了什么吗?
答案 0 :(得分:147)
使用GNU的date
,您可以:
date -d "@$TIMESTAMP"
# date -d @0
Wed Dec 31 19:00:00 EST 1969
(来自:BASH: Convert Unix Timestamp to a Date)
在OS X上,使用date -r
。
date -r "$TIMESTAMP"
或者,使用strftime()
。它不能直接从shell获得,但您可以通过gawk访问它。 %c
说明符以依赖于语言环境的方式显示时间戳。
echo "$TIMESTAMP" | gawk '{print strftime("%c", $0)}'
# echo 0 | gawk '{print strftime("%c", $0)}'
Wed 31 Dec 1969 07:00:00 PM EST
答案 1 :(得分:57)
date -d @1278999698 +'%Y-%m-%d %H:%M:%S'
@
后面的数字是以秒为单位的数字
答案 2 :(得分:21)
此解决方案适用于不支持date -d @
的日期版本。它不需要AWK或其他命令。 Unix时间戳是自1970年1月1日UTC以来的秒数,因此指定UTC非常重要。
date -d '1970-01-01 1357004952 sec UTC'
Mon Dec 31 17:49:12 PST 2012
如果您使用的是Mac,请使用:
date -r 1357004952
获取纪元的命令:
date +%s
1357004952
归功于Anton: BASH: Convert Unix Timestamp to a Date
答案 3 :(得分:9)
正如@TomMcKenzie在对另一个答案的评论中所说,date -r 123456789
可以说是一个更常见的(即更广泛实现的)简单解决方案,自Unix时代以来以秒为单位,但不幸的是,没有普遍保证的便携式解决方案
许多类型的系统上的-d
选项意味着与GNU Date的--date
扩展完全不同。遗憾的是,GNU Date并不像其他实现那样解释-r
。所以很遗憾你必须知道你正在使用哪个版本的date
,而许多旧的date
命令都不支持任何一个选项。
更糟糕的是,POSIX date
既不识别-d
也不识别-r
,并且根本不提供任何命令(我知道)从命令行格式化Unix时间(因为POSIX Awk也缺少strftime()
)。 (你不能使用touch -t
和ls
,因为前者不接受自Unix Epoch以来的秒数。)
注意虽然直接来自Brian Kernighan的One True Awk现在具有内置的strftime()
函数以及systime()
函数来返回自Unix Epoch以来的当前时间,所以Awk解决方案也许是最便携的。
答案 4 :(得分:4)
如果您发现符号笨拙,可能-R
- 选项确实有帮助。它以RFC 2822格式提供日期。因此,您不需要所有这些标识符:date -d @1278999698 -R
。另一种可能性是在您的语言环境中输出日期:date -d @1278999698 +%c
。应该很容易记住。 : - )
答案 5 :(得分:2)
标准的Perl解决方案是:
echo $TIMESTAMP | perl -nE 'say scalar gmtime $_'
(或当地时间,如果愿意的话)
答案 6 :(得分:2)
对dabest1上面的答案进行轻微修正。将时区指定为UTC,而不是GMT:
$ date -d '1970-01-01 1416275583 sec GMT'
Tue Nov 18 00:53:03 GMT 2014
$ date -d '1970-01-01 1416275583 sec UTC'
Tue Nov 18 01:53:03 GMT 2014
第二个是正确的。我认为原因是在英国,从1968年到1971年,夏令时不断发生。
答案 7 :(得分:2)
这里的其他例子很难记住。最简单的是:
date -r 1305712800
答案 8 :(得分:1)
awk 'BEGIN { print strftime("%c", 1271603087); }'
答案 9 :(得分:0)
将以下内容放入〜/ .bashrc中:
function unixts() { date -d "@$1"; }
用法示例:
$ unixts 1551276383
Wed Feb 27 14:06:23 GMT 2019
答案 10 :(得分:-1)
Python:
python -c "from datetime import datetime; print(datetime.fromtimestamp($TIMESTAMP))"