momentjsのドキュメントといくつかの問題(ここではstackoverflow)ローカルのUTCオフセットがどのように決定されているかの答えが見つかりませんでした。私はアメリカ/デンバータイムゾーンにいます。この執筆時点では、オフセットはUTC-07:00です。 Windowsの時計が正しく設定され、ローカル時刻が正しく表示されます。 「2017年4月24日午後五時33分55秒」のUTCタイムスタンプのために、私は「4月24日午前10時12分34秒」モーメントjsが間違ったタイムゾーン/オフセットを取得していますので、UTCから現地時間への変換は正しくありません
dateString = "2017-04-24 17:12:34"
console.log("dateString: " + dateString)
utc = moment.utc(dateString)
console.log("utc: " + utc.format())
now = moment(utc.format())
console.log("now: " + now.format())
displayDate = now.format("MM/DD HH:mm:ss")
console.log("displayDate: " + displayDate)
しかし、これは何であるとしてdisplayDateをログに記録するために、次のコードを期待しますコンソールが表示さ:00:
dateString: 2017-04-24 17:12:34
utc: 2017-04-24T17:12:34Z
now: 2017-04-24T18:12:34+01:00
displayDate: 04/24 18:12:34
私はそれはUTC + 01のオフセットで私はタイムゾーンにいると考えてどのようには考えています。私は瞬間タイムゾーンを使用していないし、なぜ瞬間が間違ったオフセットを拾っているのかを解決することができませんでした。私はTZ環境変数がAmerica/Denverに設定されていることに気づいたので、これは明らかに効果がありません。どのように瞬間はローカルオフセットを決定するのですか?どこかでうんざりしているデフォルト設定がありますか?同じコードが別のマシンで正常に動作するため、マシン上のものでなければなりません。
このコードは役立つ場合がありますが、AngularJS(バージョン1.5.8)アプリにあります。
乾杯、 リッチ
デンバーは、そのタイムスタンプのためにUTC-6ではありません-7。 '2017-04-24T11:12:34-06:00'を取得する必要があります。これは、説明したように設定されたタイムゾーンでWindows上のChromeで実行したときの結果です。どのブラウザ/バージョンで実行していますか?コマンドラインで 'tzutil/g'を実行できますか? 'Mountain Standard Time'と言うのでなければ、あなたはDenverに設定されていません。 –
また、新しいDate()。toString()と 'new Date()。getTimezoneOffset()を試してください.Momentのローカルタイムゾーンは' Date'オブジェクトからちょうど渡されます。 –
@MattJohnsonコメントをいただきありがとうございます - あなたはデンバーのオフセットについて間違いありません - 私の間違い。私は、DSTが始まった2週間ほど、この方法だと思います。日付とタイムゾーンのオフセットは次のとおりです。[js-time:Tue Apr 25 2017 15:06:10 GMT + 0100(Ame)、js-tz:-60] これはどこから来るのかわかりませんWindowsの時計は、Mountain Time(米国とカナダ)で正しく設定されています。 –