![一个系统上的日期无效;在另一个系统上完全有效?](https://linux22.com/image/166012/%E4%B8%80%E4%B8%AA%E7%B3%BB%E7%BB%9F%E4%B8%8A%E7%9A%84%E6%97%A5%E6%9C%9F%E6%97%A0%E6%95%88%EF%BC%9B%E5%9C%A8%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%B3%BB%E7%BB%9F%E4%B8%8A%E5%AE%8C%E5%85%A8%E6%9C%89%E6%95%88%EF%BC%9F.png)
我的代码需要一个开始时间,然后从该开始时间定义一些其他日期/时间变量。就像这样:
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