具体来说,我想知道的是:当 EST 10:00 (10AM) 时,用户当前时区是几点?在撰写本文时,对英国用户 (GMT) 的回答是 15:00 (3PM)。
对于我的具体情况,我什至不需要分钟或日期,只需要小时(15
在本例中)。
大多数此类性质的问题都与转换当前时间(现在)或从用户的时区。有一次我什至求助于 ruby 来进行转换,但让它在 UTC 以外的任何地方工作有点困难。我觉得一定有办法用 来做到这一点date
,但 macOS 使用 BSD date
,大多数答案都使用 GNU。
答案1
它相当笨重,但这应该在 MacOS 上仅使用 shell 和命令来完成date
:
将北美东部时间 2017-01-05 10:00:00 转换为系统本地时区:
date -r $(TZ=America/Montreal date -j 010510002017 +%s)
要将其转换为本地时区以外的时区,请在外部命令前加上所需的目标时区:
TZ=Australia/Sydney date -r $(TZ=America/Montreal date -j 010510002017 +%s)
请注意极其奇怪的日期输入格式:mmddHHMMYYYY
答案2
POSIX API 在这方面并不是很丰富。你可能最好使用类似的东西皮兹比系统工具:
#!/usr/bin/python
import datetime
import pytz
eastern = pytz.timezone('America/Montreal')
britain = pytz.timezone('Europe/London')
datetime.datetime(2017, 1, 5, 10, 0, tzinfo=eastern).astimezone(britain)