我需要将时间从本地时区 (CET/CEST) 转换为悉尼时区 (AEDT/AEST)。我尝试过这样的事情:
export date=$(date "+%Y-%m-%d %H:%M:%S AEDT")
date "+%Y-%m-%d %H:%M:%S %Z" -d "$date"
它不起作用,它无法识别“AEDT”,但是我用“UTC”尝试过,它起作用了。我尝试用“澳大利亚/悉尼”替换“AEDT”(我在 /usr/share/zoneinfos 中找到它),但结果是相同的。
我将不胜感激任何建议,我正在使用 korn shell。谢谢。
答案1
如果要将本地时区的随机时间转换为另一个时区的时间:
$ date -d @$(date +%s -d '2014/10/01 12:34:56')
Wed Oct 1 12:34:56 CEST 2014
$ TZ=Australia/Sydney date -d @$(date +%s -d '2014/10/01 12:34:56')
Wed Oct 1 20:34:56 EST 2014
我使用自 Unix 纪元以来的秒数作为传达时间点的自然方式。
答案2
使用几种脚本语言:
perl -MDateTime -E 'say DateTime->now(time_zone => "local")->set_time_zone("Australia/Sydney")->strftime("%F %T %Z")'
echo 'puts [clock format [clock seconds] -format {%Y-%m-%d %T %Z} -timezone ":Australia/Sydney"]' | tclsh