配置日期命令以满足我的格式
Posted
技术标签:
【中文标题】配置日期命令以满足我的格式【英文标题】:Configuring date command to meet my format 【发布时间】:2015-01-04 16:22:39 【问题描述】:我有一个 YYYY.MM.DD HH:SS 格式的日期(例如 2014.02.14 13:30)。我想使用 date 命令在几秒内转换它。
命令
日期 -d"2014.02.14 13:30" +%s
不会工作,因为点分离。
有什么想法吗?
【问题讨论】:
有什么限制?如果您可以在 bash 脚本中执行此操作,请将其转换并去除点,然后转换为纪元。 请注意:在freebsd上有-f
【参考方案1】:
为什么不让日期格式可以接受?只需用破折号替换点:
$ date --date="`echo '2014.02.14 13:30' | sed 's/\./-/g'`" +%s
1392370200
这里我先改一下格式:
$ echo '2014.02.14 13:30' | sed 's/\./-/g'
2014-02-14 13:30
然后将结果用作date
的参数。
请注意,结果取决于您的时区。
【讨论】:
我应该提到它在 awk 命令中通过管道作用: awk 'BEGINgetlinecommand=("date --date=\""$1" "$2"\"") ;而(.... 然后在awk
中使用gsub
函数进行相同的替换。【参考方案2】:
你可以使用:
s='2014.02.14 13:30'
date -d "$s//./"
Fri Feb 14 13:30:00 EST 2014
获取EPOCH值:
date -d "$s//./" '+%s'
1392402600
【讨论】:
为什么没有秒数不同??在每个ans中?? 哦,这是因为 EST 和 IST 得到了它:)【参考方案3】:使用 awk :
s=`echo "2014.02.14 13:30" | awk 'gsub(/\./,"-",$0);print $0'`
echo -d "$s"
date -d "$s" +%s
输出:
Fri Feb 14 13:30:00 IST 2014
1392364800
【讨论】:
【参考方案4】:Perl: 不需要你修改字符串
d="2014.02.14 13:30"
epoch_time=$(perl -MTime::Piece -E 'say Time::Piece->strptime(shift, "%Y.%m.%d %H:%M")->epoch' "$d")
echo $epoch_time
1392384600
时区:加拿大/东部
【讨论】:
谢谢,perl 看起来很强大,但一次只能使用一种语言。【参考方案5】:我终于解决了
awk 'BEGINFS="," gsub(/./," ",$1);gsub(/:/," ",$2); var=sprintf("%s %s 00",$1,$2);打印 mktime(var), $3,$4,$5,$6,$7 ' myfile |少
所以我的文件:
2014.09.24,15:15,1.27921,1.27933,1.279,1.27924,234
成为
1411582500 1.27921 1.27933 1.279 1.27924 234
:)
【讨论】:
以上是关于配置日期命令以满足我的格式的主要内容,如果未能解决你的问题,请参考以下文章