跨时区转换时间,同时保留 DST + 其他调整,使用 bash/sh
Converting time across timezones, while preserving DST + other adjustments, using bash/sh
给定任何两个或多个时区,我想将任何时区的本地时间转换为任何其他时区,以便时间表示准确地表示每个时区生效的任何本地更改(DST 等)。
具体来说,如果我提供的某些时区碰巧涉及 DST 考虑因素,我需要检测并捕获这一点,以便自动进行适当的重新计算 - 例如,自动调整这些时区的输出向前或向后一小时。
我想从 shell 完成所有这些,如果可能的话,最好使用便携技术;我正在考虑将繁重的工作交给 date
,但我不确定如何让它执行相对时区精确的计算,尤其是在至少 Linux 和 BSD 的跨平台方式下。
先转换成UTC再转换成目标时区(以CET为例)
TZ=CET date --date=@$(TZ=UTC date +%s)
夏令时将自动执行。
给定任何两个或多个时区,我想将任何时区的本地时间转换为任何其他时区,以便时间表示准确地表示每个时区生效的任何本地更改(DST 等)。
具体来说,如果我提供的某些时区碰巧涉及 DST 考虑因素,我需要检测并捕获这一点,以便自动进行适当的重新计算 - 例如,自动调整这些时区的输出向前或向后一小时。
我想从 shell 完成所有这些,如果可能的话,最好使用便携技术;我正在考虑将繁重的工作交给 date
,但我不确定如何让它执行相对时区精确的计算,尤其是在至少 Linux 和 BSD 的跨平台方式下。
先转换成UTC再转换成目标时区(以CET为例)
TZ=CET date --date=@$(TZ=UTC date +%s)
夏令时将自动执行。