n-a*_*der 574 linux bash datetime
我需要一些简单的东西date,但是自1970年以来的几秒钟而不是当前的日期,小时,分钟和秒.
date似乎没有提供这种选择.有一个简单的方法吗?
Ste*_*eef 1055
这应该工作:
date +%s
Run Code Online (Sandbox Code Playgroud)
pel*_*ide 120
只是补充一下.
获取自纪元(1970年1月1日)以来任何特定日期(例如1973年10月21日)的秒数.
date -d "Oct 21 1973" +%s
Run Code Online (Sandbox Code Playgroud)
将秒数转换回日期
date --date @120024000
Run Code Online (Sandbox Code Playgroud)
该命令date非常通用.你可以用日期做的另一件很酷的事情(无耻地复制date --help).显示下周五上午9点在美国西海岸的当地时间
date --date='TZ="America/Los_Angeles" 09:00 next Fri'
Run Code Online (Sandbox Code Playgroud)
更好的是,花些时间阅读手册页 http://man7.org/linux/man-pages/man1/date.1.html
gni*_*urf 38
到目前为止,所有答案都使用外部程序date.
从Bash 4.2开始,printf有一个新的修饰符%(dateformat)T,当与参数一起使用时,-1输出当前日期,格式由给定dateformat,处理strftime(3)(man 3 strftime有关格式的信息).
那么,对于纯粹的Bash解决方案:
printf '%(%s)T\n' -1
Run Code Online (Sandbox Code Playgroud)
或者如果您需要将结果存储在变量中var:
printf -v var '%(%s)T' -1
Run Code Online (Sandbox Code Playgroud)
没有外部程序,没有子shell!
从Bash 4.3开始,甚至可以不指定-1:
printf -v var '%(%s)T'
Run Code Online (Sandbox Code Playgroud)
(但总是尽可能地提出论点可能更明智-1).
如果您使用-2as作为参数而不是-1,Bash将使用shell的启动时间而不是当前日期(但为什么要这样?).
小智 20
大多数Awk实现:
awk 'BEGIN {srand(); print srand()}'
Run Code Online (Sandbox Code Playgroud)
Peq*_*qNP 17
这是@pellucide所做的扩展,但对于Macs:
确定自纪元(1970年1月1日)以来任何特定日期(例如1973年10月21日)的秒数
$ date -j -f "%b %d %Y %T" "Oct 21 1973 00:00:00" "+%s"
120034800
Run Code Online (Sandbox Code Playgroud)
请注意,为了完整起见,我已将时间部分添加到格式中.原因是,您date将采用您提供的任何日期部分,并将当前时间添加到提供的值.例如,如果您在下午4:19执行上述命令,而没有'00:00:00'部分,它将自动添加时间.这样"1973年10月21日"将被解析为"1973年10月21日16:19:00".这可能不是你想要的.
要将时间戳转换回日期:
$ date -j -r 120034800
Sun Oct 21 00:00:00 PDT 1973
Run Code Online (Sandbox Code Playgroud)
Apple的日期实现手册页:https: //developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/date.1.html
Soc*_*owi 13
从bash5.0(2019年1月7日发布)开始,您可以使用内置变量EPOCHSECONDS。
$ echo $EPOCHSECONDS
1547624774
Run Code Online (Sandbox Code Playgroud)
还EPOCHREALTIME包括几分之一秒。
$ echo $EPOCHREALTIME
1547624774.371215
Run Code Online (Sandbox Code Playgroud)
EPOCHREALTIME可以通过删除小数点将其转换为微秒(?s)。当使用只能处理整数bash的内置算法时,这可能会引起人们的兴趣(( expression ))。
$ echo ${EPOCHREALTIME/./}
1547624774371215
Run Code Online (Sandbox Code Playgroud)
在上面的所有示例中,打印时间值均相等,以提高可读性。实际上,时间值会有所不同,因为每个命令需要花费少量时间来执行。
| 归档时间: |
|
| 查看次数: |
469976 次 |
| 最近记录: |