날짜 문자열을 타임스탬프로 변환

날짜 문자열을 타임스탬프로 변환

epoch 타임스탬프에서 문자열 날짜를 변환하는 올바른 구문을 찾을 수 없습니다.

스크립트는 다음과 같습니다

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

관련 정보