8

カレンダーから将来の日付を選択する必要があります。選択した日付がであると仮定します10/14/2014。次に、サーバーに時刻を含む日付を送信して、サーバー側でPSTタイムゾーンと形式で常に午前6時に到達するようにします。日付はUTCである必要があります。

私がしているのは

targetDate = new Date($("#calendar").val()); targetDate = targetDate.toUTCString(); targetDate = targetDate.addHours(14);

私の理解では、PSTタイムゾーンは-8:00なので、UTC時間に14時間を追加して、時刻がPSTの午前6:00になるようにしました。

私が直面している問題は、オブジェクトがすでに文字列に変換されているため、14時間を追加できないことです。

addHoursは、指定された時間に時間を追加する必要があるカスタム関数です。

私が書いたら

targetDate = new Date($("#calendar").val()); targetDate = targetDate.addHours(14); targetDate = targetDate.toUTCString();

そうすればうまくいきますが、この場合の問題は、リクエストが異なるタイムゾーンから来ている場合、時間が常に異なることです。

どんな助けでも大歓迎です。

4

8 に答える 8

8

あなたが言った:

私の理解では、PST タイムゾーンは -8:00 であるため、UTC 時間に 14 時間を追加して、時刻が午前 6:00 PST になるようにしました。

いいえ。そうすれば次の日になります。PST のままにしたい場合は、UTC 時間から 8 時間 を引きます。は、 UTC-8:00から 8 時間遅れていることを意味します。

ただし、太平洋時間帯は PST に固定されているだけではありません。夏時間の場合、PST (-8) と PDT (-7) が交互に表示されます。正しいオフセットを決定するには、TZDB データベースを実装するライブラリを使用する必要があります。ここでこの重複した回答を参照してください。

派手なライブラリなしでそれを行う唯一の方法は、実際太平洋時間帯にいることです。JavaScript は、表示のために UTC 日付をローカル タイム ゾーンに変換し、正しいオフセットを使用します。ただし、ローカルタイム ゾーンしか認識していません。太平洋標準時がローカル タイム ゾーンでない場合は、ライブラリを使用する必要があります。

于 2013-07-04T19:23:04.200 に答える
4

DateJS http://code.google.com/p/datejs/またはhttp://www.datejs.com/をご覧になることをお勧めします。PDT を処理します。

これがあなたのための代替手段です:

用途: Date.UTC(年、月、日、時、分、秒、ミリ秒)

例: 2013 年 1 月 1 日午前 6 時 (PST) の場合

var date = new Date(Date.UTC(2013, 0, 1, 14, 0, 0))   
console.log(date.toUTCString());  

Prints: "Tue, 01 Jan 2013 14:00:00 GMT"

于 2012-12-13T06:25:10.820 に答える
0

主にコメント:

カレンダーから将来の日付を選択する必要があります。選択している日付が 2014 年 10 月 14 日であるとします。

14 番目の月がないので、2014 年 10 月 14 日を意味していると思います。これは国際的なフォーラムなので、明確な形式を使用することをお勧めします。

…日付の形式は UTC にする必要があります

UTC は形式ではなく、標準時です。

あなたは混乱していると思います。UTC で 2014-10-14T06:00:00-08:00 と言う場合、同等のものは 2014-10-14T14:00:00Z です。

メソッドを使用していますがtoUTCString、実装に依存しているため、ブラウザーごとに異なる結果が得られます。おそらくtoISOStringメソッドが必要ですが、これは ES5 であり、すべてのブラウザーに実装されているわけではありません。

時間を変換する方法の例をいくつか提供する必要があります。それ以外の場合は、日付を ISO8601 形式で取得し、それに「T14:00:00Z」を追加することもできます。

于 2012-12-13T07:07:18.827 に答える
-1

UTCに変換する前に14時間を追加するだけでよいと思います。

または、UTC文字列から新しいDateオブジェクトを作成できます。

var date = new Date();
date = date.addHours(14);
var dateUTC = new Date(date.toUTCString());
于 2012-12-13T06:29:24.350 に答える