我有一个从文件名中提取的日期/时间字符串。我知道时间戳是使用时区 A 编写的,我需要将其转换为时区 B 以进行进一步处理。这在 bash 中可行吗?
例如:
filenameTimestamp="2015-01-20 18:05:02"
timezoneA="Australia/Sydney"
timezoneB="Australia/Brisbane"
我假设我必须使用时区 A 来解析字符串,然后使用时区 B 将其再次输出为字符串。
答案1
将悉尼的日期解释为美国洛杉矶的日期:
$ sec=$(TZ="Australia/Sydney" date +'%s' -d "2015-05-20 18:05:02")
$ TZ="America/Los_Angeles" date -d "@$sec"
Wed May 20 01:05:02 PDT 2015
布里斯班的结果如下:
$ TZ="Australia/Brisbane" date -d "@$sec"
Wed May 20 18:05:02 AEST 2015
怎么运行的
TZ="Australia/Sydney" date +'%s' -d "2015-05-20 18:05:02"
这会将时区临时设置为悉尼,并将日期“2015-05-20 18:05:02”转换为自纪元(UTC)以来的秒数。
sec=$(TZ="Australia/Sydney" date +'%s' -d "2015-05-20 18:05:02")
这会将自纪元(UTC)以来的时间(以秒为单位)保存到 shell 变量中
sec
。TZ="America/Los_Angeles" date -d "@$sec"
这会暂时将时区设置为洛杉矶,并解释给出的日期
sec
。