16

私の Web ページには、ISO 文字列を取得して最初の 10 文字を取り出すことで日付を設定できる入力があります。

date = new Date();
dateInput.value = date.toISOString().substr(0,10);

これは完全に機能します。私の問題は、日付を取り戻そうとするときです。日付を1日お休みします。

var newDate = new Date(dateInput.value);

それを補うために次のコードも試しましたが、常に正しいとは限りません

新しい日付 (Date.parse(要素.値) + 86400000)

私の質問は次のとおりです。一貫して正しい日付を取得するエレガントな方法はありますか。少し調べてみたのですが、Javascript の日付解析との整合性があまりないようです。

4

6 に答える 6

25

dateサポートしているブラウザーでの実際の入力である場合は、valueAsDateプロパティがあります。解析する必要はありません。

于 2013-05-29T23:09:26.717 に答える
1

マーティが言ったように、問題は入力のタイムゾーン (W3C で定義された UTC) と JS タイムゾーン (ローカル) の表現の違いです。解決策は、getTimezoneOffset (分単位) を取得し、すべてをミリ秒に変換することです。

var today = document.getElementById("myInputDate").valueAsDate;
var tomorrow = new Date(today.valueOf() + 86400000 + (today.getTimezoneOffset() * 60000));

86400000 = 1 日のミリ秒

today.getTimezoneOffset() * 60000 = timezoneOffsetミリ秒単位

于 2015-10-09T15:42:04.197 に答える