2

ユーザーに管理画面 (Django 1.4) にイベントを入力してもらいます。日付/時刻を入力し、それが行われ、表示されるタイムゾーンを選択できると、最も直感的になります.

つまり、「このイベントは 11 月 2 日の午後 4 時 EST に開催されます」と何らかの形で指定できるようにして、そのタイムゾーンで表示されるようにしたいのです。

管理者は、タイムゾーン エントリを処理したり、日時フィールドにタイムゾーンを指定したりする機能をまだ持っていないようです。そのため、これを行う方法がよくわかりません。

4

1 に答える 1

2

Djangoは、1.4 でモデル datetime オブジェクトのタイムゾーン サポートを追加しました。

ただし、私はそれを使用していないため、管理者または ModelForm の作成時にタイムゾーンを自動的に設定できるかどうかはわかりません。

何が起こっているのかを理解することは重要です。何が行われているのかを理解したら、django のタイムゾーン サポートを使用する方がよいかもしれません。

内部の django サポートを無視して、次のような方法で問題を攻撃します。

from pytz import all_timezones, timezone

TIMEZONES = zip(all_timezones, all_timezones)

class EventModel(models.Model):

    dt = models.DateTimeField() # user entry
    tz = models.CharField(max_length=150,
                          choices=TIMEZONES) # user entry

    def get_dt_in_user_timezone(self, user_profile):
        event_tz = timezone(self.tz)
        event_dt = event_tz.localize(self.dt) # assign timezone to datetime

        # convert registered datetime to utc
        # --> This can probably be bypassed
        utc_dt = event_dt.astimezone(pytz.utc) 

        # convert to user's time defined in profile
        user_tz = timezone(user_profile.tz)
        return utc_dt.astimezone(user_tz)

Python でタイムゾーンを扱う場合、pytzが必要になります。

于 2012-10-03T00:55:46.647 に答える