将日期字符串转换为时间戳

将日期字符串转换为时间戳

我找不到正确的语法来转换纪元时间戳中的字符串日期。

脚本是:

date -d '2012-03-02 22:00 EDT' +%s
DATEJ=`echo -n \'2012-03-02 22:00\'`
echo $DATEJ
date -d $DATEJ EDT +%s

结果是

[gg@raspi8 ~]$ CNVDATTS
1330740000  
'2012-03-02 22:00'  
date: opérande supplémentaire « EDT »  
Saisissez « date --help » pour plus d'informations.  

错在哪里?

该变量似乎DATEJ没有给出与第一行中的字符串相同的值。如果我不写EDT,错误是相同的,但要提及+%s

答案1

这里的问题似乎是单引号$DATEJ。你的变量强加了它们。

将其更改为

DATEJ=`echo -n "2012-03-02 22:00"`

并在最后的命令中:

date -d "$DATEJ EDT" +%s

这将起作用:

$ date -d '2012-03-02 22:00 EDT' +%s
1330740000
$ DATEJ=`echo -n "2012-03-02 22:00"`
$ echo $DATEJ
2012-03-02 22:00
$ date -d "$DATEJ EDT" +%s
1330740000

编辑

实际上,您不需要echo日期,除非您的脚本强制如此,所以变量$DATEJ可以简单地表示为

DATEJ="2012-03-02 22:00"

答案2

希望以下内容能够帮助您或其他寻求解决方案的人。

日期字符串可以是格式mm/dd/yyyy hh:mm:ss zzz或任何等效格式。例如:"06/10/2021 21:00:00 EST""06/10/2021 09:00:00 EST" TZ 数据是可选的。

您可以发出以下命令来获取纪元时间戳:

date -d "06/10/2021 00:00:00 EST" +"%s"

或者

您可以将字符串传递到变量中,例如:

date_string="06/10/2021 00:00:00 EST"
date -d "$date_string" +"%s"

对于您的具体问题,以下应该有效:

date -d '2012-03-02 22:00 EDT' +%s
DATEJ=`echo -n "2012-03-02 22:00"`
echo $DATEJ
date -d "$DATEJ EDT" +%s

相关内容