贝壳日期" -n hours"与#34; n小时前不同"在某些情况下

时间:2016-11-23 06:18:12

标签: shell date

在shell中,当我打印这个

2016-11-23 23:00:00.

我得到date -d "2016-11-23 13:05 1 hours ago" "+%Y-%m-%d %H:00:00" 奇怪!

我打印时

2016-11-23 12:00:00

我得到2016-11-23 12:00:00

为什么他们不同?我认为他们都是conn = New Mysqlconnection() conn.ConnectionString = "server=justhost.com; user id=*****; password=****; database=login" Try conn.Open() Catch myerror As MySqlException MsgBox("Error connecting to database!") End Try

1 个答案:

答案 0 :(得分:4)

这是因为负数被视为您的时区的偏移,而不是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

时区偏移量通常指定为四位数字,如

Sun, 29  Feb 2004  16:21:42 -0800

但显然日期(1)也很满意-1。

从手册页:

  

DATE STRING

     

--date = STRING是一种大多数自由格式的人类可读日期字符串,例如“Sun,2月29日   2004 16:21:42 -0800“或”2004-02-29 16:21:42“甚至”下周四“。日期字符串可能   包含表示日历日期,时间,时区,星期几,相对的项目   时间,相对日期和数字。空字符串表示当天的开始。   日期字符串格式比这里容易记录的更复杂但完全是   在信息文档中描述。