我的日期为YYYY.MM.DD HH:SS格式(例如2014.02.14 13:30)。我想使用date命令在epoch之后的几秒钟内转换它。
命令
date -d“2014.02.14 13:30”+%s
由于点分离,不起作用。
任何想法?
答案 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
:)