获取与本地计算机不同的时区区域设置
Obtaining a Time Zone Locale that is Different from Local Machine
我正在编写一个方法,该方法将 return 一个时区,即具有不同日期的 UTC 时区。此方法应将用户设置的时区作为输入。我知道我必须越过国际日期变更线才能到达不同日期的时区,但我不确定我是否遗漏了什么。
例如如果我在 EST 时区,return 时区日期与 EST 时区不同。
public String getDifferentDate (String timeZone) {
//Calculate the time zone offset required to cross International Date line
//RETURN newTimeZone with different date.
}
要获取日期与给定时区中的当前日期不同的某个时区:
#!/usr/bin/env python
from datetime import datetime
import pytz # $ pip install pytz
def get_timezone_with_different_date(input_timezone_id, now=None):
"""
input_timezone_id: the tz database id such as 'America/New_York'
now: a naive datetime object representing time in input_timezone_id
"""
input_tz = pytz.timezone(input_timezone_id)
if now is None:
now = datetime.now(input_tz) # use the current time
else:
now = input_tz.localize(now, is_dst=None) # make it timezone-aware
for tz in map(pytz.timezone, pytz.all_timezones_set):
if tz.normalize(now.astimezone(tz)).date() != now.date():
return tz.zone
assert 0, 'never happens'
示例:
>>> get_timezone_with_different_date('US/Eastern')
'Australia/Melbourne'
注意:一般情况下,您无需跨越国际日期变更线即可获得不同的日期。
我正在编写一个方法,该方法将 return 一个时区,即具有不同日期的 UTC 时区。此方法应将用户设置的时区作为输入。我知道我必须越过国际日期变更线才能到达不同日期的时区,但我不确定我是否遗漏了什么。 例如如果我在 EST 时区,return 时区日期与 EST 时区不同。
public String getDifferentDate (String timeZone) {
//Calculate the time zone offset required to cross International Date line
//RETURN newTimeZone with different date.
}
要获取日期与给定时区中的当前日期不同的某个时区:
#!/usr/bin/env python
from datetime import datetime
import pytz # $ pip install pytz
def get_timezone_with_different_date(input_timezone_id, now=None):
"""
input_timezone_id: the tz database id such as 'America/New_York'
now: a naive datetime object representing time in input_timezone_id
"""
input_tz = pytz.timezone(input_timezone_id)
if now is None:
now = datetime.now(input_tz) # use the current time
else:
now = input_tz.localize(now, is_dst=None) # make it timezone-aware
for tz in map(pytz.timezone, pytz.all_timezones_set):
if tz.normalize(now.astimezone(tz)).date() != now.date():
return tz.zone
assert 0, 'never happens'
示例:
>>> get_timezone_with_different_date('US/Eastern')
'Australia/Melbourne'
注意:一般情况下,您无需跨越国际日期变更线即可获得不同的日期。