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