Bash将日期转换为时间戳

时间:2014-09-02 09:18:47

标签: bash date timestamp

我的日期格式为'YYYYMMDDHHMMSS',我需要将其转换为Unix时间戳。

我尝试date -d '20140826225834'但我收到'invalid date'错误。我认为我必须将我拥有的内容(20140826225834)转换为接受日期,然后将其转换为时间戳? 编辑:我已经从2014-08-21_23.03.07开始了这个日期 - 也许转换这个日期类型会更容易

2 个答案:

答案 0 :(得分:5)

您应该更改日期的格式,以便date可以处理它。我使用YYYY/MM/DD HH:MM:SS将其更改为sed格式。

$ 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

答案 1 :(得分:0)

你可以使用PHP,因为PHP的strtotime()可以解析你的输入格式:

#!/bin/bash

input="20140826225834"
output=$(php -r 'echo strtotime("'"$input"'");')

echo "$output" # 1409086714
相关问题