2015-03-25 9 views
0

Я пишу метод, который возвращает часовой пояс, то есть часовой пояс UTC с другой датой. Этот метод должен принимать часовой пояс, который пользователь установил как вход. Я понимаю, что мне пришлось бы пересекать Международную линию дат, чтобы перейти к часовому поясу с другой датой, но я не уверен, что здесь что-то не хватает. , например. Если я нахожусь в часовом поясе EST, верните часовой пояс, где дата отличается от часовой пояс EST.Получение локального часового пояса, отличного от локального компьютера

public String getDifferentDate (String timeZone) { 
    //Calculate the time zone offset required to cross International Date line 
    //RETURN newTimeZone with different date. 
} 
+0

Возможно, вам стоит добавить код, показывающий нам, что вы пытались объяснить, и объяснить немного больше того, что вы на самом деле хотите. –

+0

На каком языке? Java или Python? –

+0

Язык не имеет значения. Java или Python работают как – user3001378

ответ

2

Чтобы получить часовой пояс, где дата отличается от текущей даты в данном часовом поясе:

#!/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' 

Примечание: В общем, вы не необходимо пересечь Международную линию дат, чтобы получить другую дату.

+0

Действительно оцените ваше время J.F. Себастьян. Как мы будем делать это на Java? – user3001378

+1

@ user3001378: вы можете реализовать тот же алгоритм, используя [Joda Time] (http://www.joda.org/joda-time/) или аналогичную библиотеку на Java. – jfs

Смежные вопросы