web-dev-qa-db-ja.com

moment.jsを使用して、ユーザーのタイムゾーンでdate()を午前0時に設定します

Moment.jsを使用して、ユーザーのローカルタイムゾーンでUTC日​​付を表示します。

_var date = new Date(Date.UTC(2016,03,30,0,0,0));
var now = new Date();
var diff = (date.getTime()/1000) - (now.getTime()/1000);

var textnode = document.createTextNode(moment(date).format('dddd, DD.MM.YYYY') + ' a las ' + moment(date).format('HH:mm A'));
document.getElementsByClassName("date")[0].appendChild(textnode.cloneNode(true));
_

後でdiff変数を使用して、カウントダウンタイマーを表示します。

ローカルタイムゾーンのすべてのユーザーに別のカウントダウンタイマーを表示したいと思います。 (UTCではなく、タイムゾーンの午前0時までの差異を使用)

しかし、私はそれを機能させるのに苦労しています。 var date = new Date(Date.UTC(2016,03,30,0,0,0));を使用する代わりに、ユーザーのタイムゾーンの真夜中まで私に提供するmoment.jsの関数を使用する必要があるでしょう。

一番良い例は大晦日でしょう。私がUTCを使用する場合、誰もが同じカウンター(残り9時間)を持つことになりますが、世界のさまざまな場所では、これは意味がありません。オーストラリアの場合は残り2時間、米国の場合は残り14時間です。

10
Snowball

だから答えはかなり簡単です(申し訳ありませんが、あなたを愚かに感じさせようとはしていません;))

var date = new Date(Date.UTC(2016,03,30,0,0,0));
var localDate = new Date(2016,03,30,0,0);
var now = new Date();
var diff = (localDate.getTime()/1000) - (now.getTime()/1000);

var textnode = document.createTextNode(moment(date).format('dddd, DD.MM.YYYY') + ' a las ' + moment(date).format('HH:mm A'));
document.getElementsByClassName("date")[0].appendChild(textnode.cloneNode(true));

Dateオブジェクトにデフォルトのコンストラクターを使用すると、JavaScriptでローカルの日付/時刻オブジェクトが得られます。

0
CodingGorilla