Как узнать текущее время с часовым поясом в python? - PullRequest
4 голосов
/ 03 марта 2011

Я использую Google App Engine с python. И я не могу установить стороннюю библиотеку.

Я думаю, что это должно работать, но на самом деле он работает без ошибок, но возвращает текущий часовой пояс не применяется.

Что я сделал не так?

from datetime import tzinfo, timedelta, datetime

class Seoul_tzinfo(tzinfo):
    def utcoffset(self, dt):
        return timedelta(hours=9)
    def dst(self, dt):
        return timedelta(0)

greeting.date = datetime.now( Seoul_tzinfo() )

Ответы [ 3 ]

3 голосов
/ 04 марта 2011

Вы говорите о том, когда объект извлекается из базы данных? Если это так, appengine сохраняет все свойства dt в UTC; когда вы ставите (), он просто отбрасывает информацию tz. Наиболее разумным было бы преобразовать ваш dt в UTC (используя astimezone ()) и преобразовать его обратно, когда вы извлекаете его из хранилища данных.

(см. http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html#DateTimeProperty)

3 голосов
/ 03 марта 2011

Вам необходимо реализовать класс tzinfo со ВСЕМИ подходящими методами, чтобы делать то, что вы хотите.

В документации говорится, что tzinfo - это абстрактный класс, который, еслидля использования с datetime объекты должны быть превращены в конкретный класс с надлежащими методами.

Специально посмотрите на это из документации:

class FixedOffset(tzinfo):
    """Fixed offset in minutes east from UTC."""

    def __init__(self, offset, name):
        self.__offset = timedelta(minutes = offset)
        self.__name = name

    def utcoffset(self, dt):
        return self.__offset

    def tzname(self, dt):
        return self.__name

    def dst(self, dt):
        return ZERO
1 голос
/ 03 марта 2011

Я использую Python 2.6.5, и ваш код работает нормально.Я настроил его, чтобы вывести мое местное время и ваше время, скорректированное;

$ python test.py
Local: 2011-03-03 08:53:43.514784
Adj: 2011-03-03 22:53:43.514784+09:00

Вы уверены, что это не связано с вашим классом приветствия?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...