当我发出bash命令时:
date --date="2018-03-03 12:16:13 -1hour" "+%Y:%m:%d %H:%M:%S"
Run Code Online (Sandbox Code Playgroud)
我希望结果是:
2018:03:03 11:16:13
Run Code Online (Sandbox Code Playgroud)
但相反,我得到:
2018:03:03 15:16:13
Run Code Online (Sandbox Code Playgroud)
我想知道这是否与时区有关,以及如何避免这种行为.
我可以重现这个.我的时区是America/New_York
$ date --date="2018-03-03 12:16:13 - 1 hour" "+%Y:%m:%d %H:%M:%S"
2018:03:03 09:16:13
$ env TZ='Europe/Belgrade' date --date="2018-03-03 12:16:13 - 1 hour" "+%Y:%m:%d %H:%M:%S"
2018:03:03 15:16:13
Run Code Online (Sandbox Code Playgroud)
解析器似乎-1将时区GMT + 01:00作为时区,然后将其转换为您当地的时区.
如果我们重新排列短语以避免时区解析歧义,我们可以得到您想要的结果:
$ date --date="- 1 hour 2018-03-03 12:16:13" "+%Y:%m:%d %H:%M:%S"
2018:03:03 11:16:13
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41 次 |
| 最近记录: |