【发布时间】:2024-01-16 08:32:01
【问题描述】:
我有一个'YYYYMMDDHHMMSS' 格式的日期,我需要将其转换为 Unix 时间戳。
我尝试date -d '20140826225834',但收到'invalid date' 错误。我假设我必须将我拥有的(20140826225834)转换为接受的日期,然后将其转换为时间戳?
编辑:我已经从2014-08-21_23.03.07 sed 这个日期 - 也许转换这个日期类型会更容易
【问题讨论】:
我有一个'YYYYMMDDHHMMSS' 格式的日期,我需要将其转换为 Unix 时间戳。
我尝试date -d '20140826225834',但收到'invalid date' 错误。我假设我必须将我拥有的(20140826225834)转换为接受的日期,然后将其转换为时间戳?
编辑:我已经从2014-08-21_23.03.07 sed 这个日期 - 也许转换这个日期类型会更容易
【问题讨论】:
您可能应该更改获取日期的格式,以便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
【讨论】:
sed 比 PHP 更有可能在 shell 脚本中使用 ;)
1409086714 - 这是时间戳吗?
seconds since 1970-01-01 00:00:00 UTC。
你可以使用 PHP,因为 PHP 的 strtotime() 可以解析你的输入格式:
#!/bin/bash
input="20140826225834"
output=$(php -r 'echo strtotime("'"$input"'");')
echo "$output" # 1409086714
【讨论】: