关于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
相关产品推荐
相关产品推荐

