2016-08-18 158 views
1

我具有人可读的时间作为使用外壳脚本

08-18-2016 09:18:25 

我希望它使用外壳脚本转换成信号出现时间转换人类可读的时间到EPOCH。

我试着用date "+%s"但我得到的错误

日期:无效日期'2016年8月18日9时32' 分42秒

+0

epoch含义自1970年1月1日以来的秒数? – fedorqui

+0

输出应该是'1471511905' –

+0

您是否知道'date -d“...您的日期...”“+%s”'? – fedorqui

回答

2

为datetime转换为规范的方法时代是使用:

date "+%s"     # for this moment's date 
date -d" some date" "+%s"  # for a specific date 

然而,在这种情况下,格式不正确:

$ date -d"08 18 2016 09:18:25" "+%s" 
date: invalid date ‘08 18 2016 09:18:25’ 

然后,您需要在将字符串传递到date -d之前对其进行按摩。

这两个第一空间转换成斜线:

$ sed 's# #/#;s# #/#' <<< "08 18 2016 09:18:25" 
08/18/2016 09:18:25 

所以此工程:

$ date -d"$(sed 's# #/#;s# #/#' <<< "08 18 2016 09:18:25")" "+%s" 
1471504705 

或者使用变量:

$ nice_date=$(sed 's# #/#;s# #/#' <<< "08 18 2016 09:18:25") 
$ date -d"$nice_date" "+%s" 
1471504705 
+1

感谢您对fedorqui的解释。 但是1471511905是08 18 2016 09:18:25的时代,而不是1471504705. –

+0

@MohitRane好吧,这必须与你的语言环境相关。只需在你的机器上运行它,看看输出是什么。 – fedorqui

+0

@MohitRane我的方法对你有用吗? – fedorqui

0

感谢您的解释fedorqui。但是,1471511905是划时代的时间 08 18 2016年9时18分25秒,没有1471504705. - 莫希特莱恩

date -u …将打印协调世界时