从Epoch on Linux,Bash开始,立即获得当前时间
我需要一些简单的date
,但在1970年以后,而不是当前的日期,小时,分钟和秒。
date
似乎不提供该选项。 有没有简单的方法?
这应该工作:
date +%s
只需添加。
在任何给定的日期(例如1973年10月21日)获得自1970年1月1日以来的秒数。
date -d "Oct 21 1973" +%s
将秒数转换回日期
date --date @120024000
命令date
非常灵活。 另一个很酷的事情,你可以做日期(无耻复制date --help
)。 显示美国西海岸下周五上午9点的当地时间
date --date='TZ="America/Los_Angeles" 09:00 next Fri'
更好的是,花些时间阅读手册页http://www.manpages.info/linux/date.1.html
到目前为止,所有的答案都使用外部程序date
。
自Bash 4.2以来, printf
有一个新的修饰符%(dateformat)T
,当与参数-1
一起使用时,输出当前日期格式由dateformat
给出,由strftime(3)
处理( man 3 strftime
有关格式信息)。
所以,对于纯粹的Bash解决方案:
printf '%(%s)Tn' -1
或者如果您需要将结果存储在变量var
:
printf -v var '%(%s)T' -1
没有外部程序,也没有子壳!
自Bash 4.3以来,甚至有可能不指定-1
:
printf -v var '%(%s)T'
(但总是给出参数-1
可能更明智)。
如果使用-2
作为参数而不是-1
,Bash将使用shell启动的时间而不是当前日期(但为什么要这样?)。
上一篇: Get current time in seconds since the Epoch on Linux, Bash
下一篇: Changed behaviour of java.sql.Date after OJBC client upgrade