1

日付文字列で初期化すると、本質的に米国の日付にデフォルト設定されるため、javascript Date オブジェクトを使用できないようです。カルチャ情報を日付オブジェクトに渡す方法はありません

つまり、クライアントのロケール設定が何であれ

var d = new Date("08/10/2009") は、クライアントのロケールが英国の場合、2009 年 10 月 8 日ではなく、2009 年 8 月 10 日を表す日付オブジェクトを常に作成します。

私の要件は、日/月/年を簡単に加算/減算できることであるとすれば、Dateオブジェクトなしでこれを簡単に行う賢い方法はありますか?

私がする必要があるのは、日付 (または日付の文字列表現) に日を追加することだけです。したがって、私のコードがロケール設定が米国にあることを検出した場合、「10/08/2009」のような文字列が表示されると、「10/09/2009」になりますが、英国にあることが検出された場合は、日付の英国の文字列表現を知っていて、「09/10/2009」まで叩きました

4

4 に答える 4

3

JavaScript での日付操作とローカリゼーションには、常にDateJSライブラリをお勧めします。

このライブラリは、Date オブジェクトの使用を抽象化し、非常に優れたローカリゼーション オプション、強力な日付の解析と書式設定を備えており、非常に優れた流暢な API も備えています。

于 2009-10-08T18:59:05.943 に答える
1

入力フォーマットが dd/mm/yyyy であることがわかっている場合は、正しい日付を簡単に組み立てることができます。

function britDay(D){
 D= D.match(/\d+/g);
 return new Date(+D[2], D[1]-1, +D[0]);
}

toLocaleDateString は、ユーザーが期待する形式で日付を返します。

特定の書式設定ルールに従うユーザー入力に依存することは楽観的です。そのため、ほとんどのサイトでは、月、日、年に対して個別のラベル付き入力または選択フィールドを使用しています。

于 2009-10-08T18:49:23.623 に答える
0

dojo.date.locale.parseは、選択したロケールに従ってフォーマットされた文字列を解析できるようになります。unicode.org/cldrに基づく文化データのテーブルがあります。詳細については、この記事を参照してください。

于 2009-12-11T04:07:01.940 に答える
0

日付に 86,400 * 1000 ミリ秒を追加するだけで、日付に 1 日を追加するのは簡単です。あなたのロケールでの表示が問題のようです。Date.toLocaleString() はあなたにとって正しいことをしませんか?

于 2009-10-08T18:18:34.450 に答える