2016-07-13 7 views
0

私は1カ国のみで使用されていたが現在はいくつかの国で使用されているプロジェクトに取り組んでいます。UTCと現在のタイムゾーンを使用して

だから私はイメージできるように、いくつかのDateTimeの問題に取り組んでいます。

私はfrontendにangle jsを、私のバックエンドにはpythonを、このプロジェクトには私のデータベースとしてPostgresを使用しています。

DateTimeの問題を回避し、タイムゾーンで作業しやすくするために、DateTimeをデータベースにUTCとして保存します。

from DateTime import DateTime 

# inside a class of my entity 
self.start_date = datetime.utcnow() 

これはうまくいきました。問題は、日付を元に戻そうとするときです。

たとえば、 UTCを使用(データベース に、

は、私のアプリケーションは、ユーザー がエンティティを保存するように要求GMT -1、との国で実行されている場合、それは2016年7月13日午後三時00分00秒のですnow())、DateTimeは2016-07-13 16:00:00になります。

しかし、私は価値を取り戻すためにしようとしたとき、私は2つのシナリオがあります:私は何もしない場合は、データベース上にあるように

  1. が、私は日時を受けるだろうが、「2016から07 -13 14:00:00 "
  2. ローカルのタイムゾーンに変換しようとすると、2016-07-13 17:00:00のようになります。時間は1増加し、私は予想通り減少していません。

momentjsライブラリを使用して日付を操作しようとしていますが、何も動作しないようです。

(-01:00)のようにGMTを取得してから、データベースから取得したDateTimeをGMT時間の差のように計算してください。

+0

は通常、あなたが)今( 'で割り当てデータベースと価値のtimezone'で'タイムスタンプを使用し 'と、あなたは'タイムゾーンでtimestamp_column選択「 –

+0

Yeap、私が使用している '**タイムスタンプをyour_zone'' *データベース内の*。私は 'utcnow()'を使ってデータベースのタイムゾーンの問題を回避しています。私が今必要とするのは、データベースから受け取った後にこの値を変換することです。私の場合、 'your_zone''はオプションではありません。タイムゾーンで' timestamp_columnを選択しますか? –

+0

'timestamp with timezone'はタイムゾーンを保存するだけで正確に' timestamp'とは異なります –

答えて

0

解決策:

私の解決策は、データベースにすべてのものをUTCとして保存することでした。

はUTCとして日時を取得し、momentjsライブラリを使用して、ブラウザのタイムゾーンにひそか。

このようにしてください。

moment.tz(moment.utc(datetime), moment.tz.guess()); 
関連する問題