【发布时间】:2016-08-29 00:50:15
【问题描述】:
我需要我的 bash 脚本使用 FORMAT 字符串将字符串转换为秒(从纪元开始),日期和格式字符串都由用户给出。好像在date的BSD版本中可以这样,
date -j -f "$format" "$date" +%s //format can be anything, e.g. "%Y %m %d %H:%M"
但我使用的是 Ubuntu。有没有办法使用 bash/awk/perl 等来完成这个?
【问题讨论】:
我需要我的 bash 脚本使用 FORMAT 字符串将字符串转换为秒(从纪元开始),日期和格式字符串都由用户给出。好像在date的BSD版本中可以这样,
date -j -f "$format" "$date" +%s //format can be anything, e.g. "%Y %m %d %H:%M"
但我使用的是 Ubuntu。有没有办法使用 bash/awk/perl 等来完成这个?
【问题讨论】:
date -d "$date" +%s
例如,
$ date='2016 05 03 16:00' date -d "$date" +%s
1462248000
无法指定传递给-d 的日期格式,但没有理由这样做。 date 使用启发式算法,可以很好地处理您的日期格式。
如果启发式不处理格式,您将无法使用 GNU 的 date。
【讨论】:
strftime 的精确格式 (%s)。
我建议你使用 Perl,它的核心是 Time::Piece 模块
$ perl -MTime::Piece -E 'say Time::Piece->strptime(@ARGV)->epoch' 'Dec 25 2015 06:05:04' '%b %d %Y %H:%M:%S'
1451023504
【讨论】:
对于支持%s的date:
date +%s
对于 Perl:
perl -e 'print time(),"\n"'
【讨论】:
$date。