1

javascript 日付オブジェクトを初期化するときに奇妙な問題に直面しています。何を初期化しても、日付が 1 JAN 1970 05:30; として表示されます。

これは私が初期化しようとする方法です

var d=new date(27-02-1989);

アラート「d」は1970年1月1日を示します.....、また、データベースから渡された日付が必要な場合もありますが、mm/dd/yyyyの形式であり、必要な形式ではありません。つまり、dd/mm/yyyy

数日前はすべてがスムーズに機能していたため、この問題が突然発生しましたが、今日プロジェクトを開いた後(2日後)、この問題は私を苛立たせています

4

5 に答える 5

2

あなたが答えを受け入れたようですが、それはあなたができる最善のことではありません。一般的に使用されているすべてのブラウザーで正しく解析される形式はありません。受け入れられた回答は、少なくとも IE 8 では失敗します。

文字列を日付に変換する唯一の安全な方法は、それを解析することです。

var s = '27-02-1989';
var bits = s.split('-');
var date = new Date(bits[2], --bits[1], bits[0]);
于 2012-06-05T08:44:41.397 に答える
1

ここによれば、試すことができます:

new Date()
new Date(milliseconds)
new Date(dateString)
new Date(year, month, day [, hour, minute, second, millisecond ])

だからあなたの場合に使用します(編集:月はゼロベースであることを覚えておく必要があります)

var d = new Date(1989,01,27);

ご注意ください - 使用Date(大文字の D)

于 2012-06-05T08:21:52.423 に答える
1

負の整数値 ( 27-02-1989 == -1964) で初期化を行っています。オブジェクトのコンストラクターは、ここにDateリストされている引数を取ります。

文字列を渡す場合は、RFC2822 準拠の形式である必要があります (こちらを参照)。

于 2012-06-05T08:23:45.920 に答える
1
// Transform your european date in RFC compliant date (american)
var date = '27-02-1989'.split('-').reverse().join('-');

// And this works
var d = new Date( date );

証拠:

証拠

于 2012-06-05T08:23:50.317 に答える
0

初めに

var d=new date(27-02-1989); 

さらに、より正しく書き直したとしても、javascript では完全に間違った表現です。

var d=new Date('27-02-1989');

この日付文字列を js でネイティブに解析する方法はありません。

ここで試すことができる解決策:

  • 文字列を ISO8601: YYYY-mm-dd に変換します。これは、ほとんどの最新のブラウザで解析できます。または、ポリフィルに多くの js ライブラリを使用できます。

  • 文字列文字列を「-」で分割してから、Date コンストラクター関数を使用しますnew Date(year, month-1, day)

  • 文字列を分割し、オブジェクトsetDate, setMonth, setYearでメソッドを使用するnew Date()

    最後の 2 つのメソッドでは、月が 0 から始まるため、月の値から 1 を差し引く必要があることに注意してください (0 は 1 月を表し、11 は 12 月を表します)。

于 2012-06-05T08:44:04.130 に答える