Bash将日期转换为时间戳
问题描述:
我有一个格式为'YYYYMMDDHHMMSS'
的日期,我需要将其转换为Unix时间戳。Bash将日期转换为时间戳
我试图date -d '20140826225834'
但我得到了'invalid date'
错误。我假设我将不得不将我有的(20140826225834
)转换为接受日期,然后将其转换为时间戳? 编辑:我有sed这个日期从2014-08-21_23.03.07
- 也许这将是更容易转换此日期类型
答
您应该更改日期的格式,以便date
可以处理它。我用sed
将它更改为YYYY/MM/DD HH:MM:SS
格式。
$ date -d"$(sed -r 's#(.{4})(.{2})(.{2})(.{2})(.{2})#\1/\2/\3 \4:\5:#' <<< "20140826225834")" "+%s"
1409086714
通过片:
$ sed -r 's#(.{4})(.{2})(.{2})(.{2})(.{2})#\1/\2/\3 \4:\5:#' <<< "20140826225834"
2014/08/26 22:58:34
$ date -d"2014/08/26 22:58:34"
Tue Aug 26 22:58:34 CEST 2014
$ date -d"2014/08/26 22:58:34" "+%s"
1409086714
答
你可以使用PHP,因为PHP的strtotime()
可以解析您的输入格式:
#!/bin/bash
input="20140826225834"
output=$(php -r 'echo strtotime("'"$input"'");')
echo "$output" # 1409086714
[转换日期时间字符串在bash UNIX时间戳可能重复命令](http://*.com/questions/10990949/convert-date-time-string-to-unix-timestamp-in-bash-command) – 2015-07-25 08:59:22