我找到了一个关于如何使用 Linuxdate
命令转换时区的解决方案:
Timezone conversion by command line
$ date --date='TZ="Asia/Taipei" 18:00'
Fri Jul 16 11:00:00 BST 2010
Run Code Online (Sandbox Code Playgroud)
它运行良好,但我无法弄清楚如何在 Bash 脚本中使用它,当时间是一个变量时,例如:
TIME=18:00
DATE="`date --date='TZ="Asia/Taipei" $TIME' +%F\ %H:%M`"
echo $DATE;
Run Code Online (Sandbox Code Playgroud)
我在转义特殊字符时遇到问题。而且我完全不明白为什么该date
命令适用于BST、EET等时区,而不适用于“亚洲/台北”、欧洲/莫斯科等时区。
有一个标题为部分QUOTING在man bash
。我建议你阅读它,或者关于引用的Bash 参考手册。
正确的命令行是:
DATE=$( date --date="TZ=\"Asia/Taipei\" $TIME" +%F\ %H:%M )
Run Code Online (Sandbox Code Playgroud)
$( )
可以防止出现反引号引起的一些引用问题。我不确定您在最后一段中要问什么,但请注意,从大陆/城市到时区的映射不是双射的。给定时区中的日期和时间,您将无法找出那是哪个城市。中的多个文件/usr/share/zoneinfo
具有相同的时区信息。此外,这取决于当你执行命令,由于夏令时,区域改变他们的整个时间段,或其他日期相关的怪事。
归档时间: |
|
查看次数: |
17808 次 |
最近记录: |