在shell中,当我打印这个
date -d "2016-11-23 13:05 -1 hours " "+%Y-%m-%d %H:00:00"
Run Code Online (Sandbox Code Playgroud)
我变得很2016-11-23 23:00:00.
奇怪!
当我打印这个
date -d "2016-11-23 13:05 1 hours ago" "+%Y-%m-%d %H:00:00"
Run Code Online (Sandbox Code Playgroud)
我得到2016-11-23 12:00:00
.
为什么他们不同?我认为他们都是2016-11-23 12:00:00
.
这是因为负数被视为您的时区的偏移量,而不是13:05
. 在我的时区 MET(格林尼治标准时间以东一小时),这就是我得到的:
$ date -d "2016-11-23 13:05 -1 hours " "+%Y-%m-%d %H:00:00"
2016-11-23 16:00:00
$ TZ=GMT date -d "2016-11-23 13:05 -1 hours " "+%Y-%m-%d %H:00:00"
2016-11-23 15:00:00
$ TZ=GMT-1 date -d "2016-11-23 13:05 -1 hours " "+%Y-%m-%d %H:00:00"
2016-11-23 16:00:00
$ TZ=GMT-1 date -d "2016-11-23 13:05 -2 hours " "+%Y-%m-%d %H:00:00"
2016-11-23 17:00:00
Run Code Online (Sandbox Code Playgroud)
时区偏移量通常指定为四位数字,如下所示
Sun, 29 Feb 2004 16:21:42 -0800
Run Code Online (Sandbox Code Playgroud)
但显然 date(1) 也对 -1 感到满意。
从手册页:
日期字符串
--date=STRING 是一个大多数自由格式的人类可读日期字符串,例如“Sun, 29 Feb 2004 16:21:42 -0800”或“2004-02-29 16:21:42”甚至“下周四” 。日期字符串可以包含指示日历日期、一天中的时间、时区、星期几、相对时间、相对日期和数字的项目。空字符串表示一天的开始。日期字符串格式比此处轻松记录的更复杂,但在信息文档中有完整描述。
归档时间: |
|
查看次数: |
69 次 |
最近记录: |