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

Linux 配置date命令以符合我的格式,linux,bash,date,epoch,Linux,Bash,Date,Epoch,我有一个YYYY.MM.DD HH:SS格式的日期(例如2014.02.14 13:30)。我想使用date命令以秒为单位转换它 命令 日期-d“2014.02.14 13:30”+%s 不起作用,因为点分离 有什么想法吗?为什么不让日期格式可以接受?只需将点替换为破折号: $ date --date="`echo '2014.02.14 13:30' | sed 's/\./-/g'`" +%s 1392370200 在这里,我首先更改格式: $ echo '2014.02.14 13:30

我有一个YYYY.MM.DD HH:SS格式的日期(例如2014.02.14 13:30)。我想使用date命令以秒为单位转换它

命令

日期-d“2014.02.14 13:30”+%s

不起作用,因为点分离


有什么想法吗?

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

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


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

为什么不将日期格式设置为可接受的格式?只需将点替换为破折号:

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

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

您可以使用:

s='2014.02.14 13:30'
date -d "${s//./}"
Fri Feb 14 13:30:00 EST 2014
要获得历代价值:

date -d "${s//./}" '+%s'
1392402600
您可以使用:

s='2014.02.14 13:30'
date -d "${s//./}"
Fri Feb 14 13:30:00 EST 2014
要获得历代价值:

date -d "${s//./}" '+%s'
1392402600
使用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
使用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

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

时区:加拿大/东部

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

时区:加拿大/东部

我终于用

awk'BEGIN{FS=“,”}{gsub(/。/,”,$1);gsub(/:/,”,$2);var=sprintf(“%s%s 00”,$1,$2);print mktime(var),$3,$4,$5,$6,$7}myfile |小于

因此,我的文件:

2014.09.24,15:15,1.27921,1.27933,1.279,1.27924234

变成

1411582500 1.27921.27933 1.2791.27924 234


:)

我终于用

awk'BEGIN{FS=“,”}{gsub(/。/,”,$1);gsub(/:/,”,$2);var=sprintf(“%s%s 00”,$1,$2);print mktime(var),$3,$4,$5,$6,$7}myfile |小于

因此,我的文件:

2014.09.24,15:15,1.27921,1.27933,1.279,1.27924234

变成

1411582500 1.27921.27933 1.2791.27924 234


:)

有什么限制?如果你能在bash脚本中完成,那么就把它转换成条带点,然后转换成epoch。注意:在freebsd上有
-f
约束条件是什么?如果你能在bash脚本中完成,那么就把它转换成点,然后转换成epoch。注意:在freebsd上有
-f
我应该提到它是在awk命令中通过管道执行的:awk'BEGIN{getline}{command=(“date--date date=\”“$1”“$2”“);而(..然后在
awk
中使用其
gsub
函数进行相同的替换。我应该提到它在awk命令中执行管道:awk'BEGIN{getline}{command=(“date--date=\''1''2'');而(..然后在
awk
中使用其
gsub
功能进行相同的替换。为什么秒数不同??在每个ans中??ohh由于EST和IST得到它:)为什么秒数不同??在每个ans中??ohh由于EST和IST得到它:)谢谢,perl看起来很强大,但是一次只能使用一种语言。谢谢,perl看起来很强大,但是一次只能使用一种语言。