You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于echo $(TZ=GMT+17 date +%Y%m%d%H%M%S)命令输出昨日时间的疑问

关于echo $(TZ=GMT+17 date +%Y%m%d%H%M%S)命令输出昨日时间的疑问

嗨,我来帮你搞明白这个容易搞混的点~

你之所以会得到昨天的时间,是因为POSIX标准里的TZ时区设置逻辑和我们日常说的“GMT+N”刚好反过来了!

日常我们说“GMT+17”,默认是指这个时区比格林尼治时间快17小时(东17区),但在POSIX的规则里:

  • GMT+offset表示当前时区比GMT慢offset小时(西offset区),计算当地时间时要用GMT时间减去offset小时
  • GMT-offset才代表比GMT快offset小时(东offset区),计算当地时间时要用GMT时间加上offset小时

回到你的场景:你运行命令时的时间是GMT 2023年11月8日11:00,设置TZ=GMT+17后,系统计算的当地时间为:

2023-11-08 11:00 - 17小时 = 2023-11-07 18:00

这正好就是你得到的输出20231107180000啦。

如果想要得到你预期的“GMT时间加17小时”的结果,你需要把TZ设置为GMT-17,运行这条命令:

echo $(TZ=GMT-17 date +%Y%m%d%H%M%S)

计算出来的时间就是「2023-11-08 11:00 +17小时 = 2023-11-09 04:00」,输出会是20231109040000(你之前预期的03:00应该是小计算失误哦😉)。

备注:内容来源于stack exchange,提问作者mscher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 09:03:08