配置date命令以符合我的格式

时间:2014-11-07 19:29:48

标签: linux bash date epoch

我的日期为YYYY.MM.DD HH:SS格式(例如2014.02.14 13:30)。我想使用date命令在epoch之后的几秒钟内转换它。

命令

date -d“2014.02.14 13:30”+%s

由于点分离,

不起作用。

任何想法?

5 个答案:

答案 0 :(得分:2)

为什么不使日期格式可以接受?只需用破折号替换点:

$ 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的参数。

请注意,结果取决于您的时区。

答案 1 :(得分:2)

您可以使用:

s='2014.02.14 13:30'
date -d "${s//./}"
Fri Feb 14 13:30:00 EST 2014

获得EPOCH值:

date -d "${s//./}" '+%s'
1392402600

答案 2 :(得分:1)

使用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

答案 3 :(得分:1)

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

时区:加拿大/东部

答案 4 :(得分:0)

我终于使用

解决了它

awk' BEGIN {FS =","} {gsub(/./,"",$ 1); gsub(/:/,&#34 ;",$ 2); var = sprintf("%s%s 00",$ 1,$ 2); print mktime(var),$ 3,$ 4,$ 5,$ 6,$ 7}' myfile |少

所以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

:)