配置日期命令以满足我的格式

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

:)

【讨论】:

以上是关于配置日期命令以满足我的格式的主要内容,如果未能解决你的问题,请参考以下文章

更改日期格式

date命令

Linux命令

bat命令创建以日期为名的文件夹

date命令详解

date命令