Windows环境下shell脚本文件中如何正确获取日本时间
问题根因
Windows下运行.sh脚本的环境(如Git Bash、MinGW、Cygwin等)对TZ时区别名的识别规则和原生Linux环境不同,大部分环境默认没有Japan时区别名的映射,部分场景还会优先调用Windows原生的date命令而非GNU date,最终导致时间返回错误。
可行解决方案
方案1:使用时区偏移替代别名(兼容性最高,优先推荐)
直接用东九区的偏移写法替换TZ=Japan,不受时区别名映射限制,所有Unix兼容层环境都能正常识别,修改后代码如下:
DATE=`TZ=JST-9 date +"%Y%d%m%H%M"` echo "Japan Date - "$DATE
方案2:修正date命令调用路径
如果需要保留时区别名写法,先排查当前环境调用的date版本:
- 执行
which date命令,若返回路径包含/usr/bin/date或/bin/date则为GNU date,可正常使用时区别名 - 若返回路径包含
/c/Windows/说明调用了Windows原生date,需调整环境变量PATH的优先级,把Unix兼容层的bin目录放到Windows系统目录之前即可。
方案3:WSL环境运行
直接在WSL安装的Linux发行版中运行原脚本,完全兼容原生Linux的时区规则,无需修改脚本内容即可正常返回日本时间。
内容的提问来源于stack exchange,提问作者bharat
相关产品推荐
相关产品推荐

