一个系统上的日期无效;在另一个系统上完全有效?

一个系统上的日期无效;在另一个系统上完全有效?

我的代码需要一个开始时间,然后从该开始时间定义一些其他日期/时间变量。就像这样:

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

相关内容