한 시스템에서는 날짜가 유효하지 않지만 다른 시스템에서는 완전히 유효합니까?

한 시스템에서는 날짜가 유효하지 않지만 다른 시스템에서는 완전히 유효합니까?

내 코드는 시작 시간을 사용하고 해당 시작 시간에서 다른 날짜/시간 변수를 정의합니다. 이와 같이:

shour=$(date -d "yesterday 3PM" -u)

dd=$(date "+%d" -d "$shour" -u) 

sdate=$(date "+%Y%m%d" -d "$shour" -u)

이것은 반환됩니다;

date: invalid date 'Thu 16 Jan 15:00:00 UTC 2020'
date: invalid date 'Thu 16 Jan 15:00:00 UTC 2020'

이것 때문에 내 머리카락을 잡아당겨!

답변1

date기본 출력을 읽을 수 없습니다.Thu 16 Jan 15:00:00 UTC 2020

date다시 처리하려는 출력은 date형식 문자열을 사용하여 출력 형식을 지정해야 합니다 '+%F %T'.

답변2

올해는 순위가 문제가 될 것 같아요. 실패하더라도:

host:~ # date -d 'Thu 16 Jan 15:00:00 UTC 2020' 
date: invalid date ‘Thu 16 Jan 15:00:00 UTC 2020

이것은 내 가상 머신에서 작동합니다.

host:~ # date -d 'Thu 16 Jan 2020 15:00:00 UTC' 
Thu Jan 16 16:00:00 CET 2020

첫 번째 명령문에 날짜 형식을 추가했는데 이것이 작동하는 것 같습니다.

shour=$(date "+%Y%m%d" -d "yesterday 3PM" -u)
ddate="$(date -d "${shour}" -u)"
sdate=$(date "+%Y%m%d" -d "$shour" -u)

답변3

시도해 볼 date수 있는 옵션 -R:

   -R, --rfc-email
          output date and time in RFC 5322 format.  Example: Mon, 14 Aug 2006 02:34:56 -0600
date -d "yesterday 3PM" -R
Thu, 16 Jan 2020 15:00:00 +0100
date -d "$(date -d "yesterday 3PM" -R)" +%s
1579183200

관련 정보