私のロケール設定は次のとおりです。
短い日付形式: dd/mm/yyyy 、長い日付形式 dd MMMM yyyy
ではなぜ
var d = new Date("8/10/2009")
alert(d.toLocaleDateString());
2009 年 8 月 10 日
また
var d = new Date("15/10/2009");
2010年3月10日吐く
私のロケール設定は次のとおりです。
短い日付形式: dd/mm/yyyy 、長い日付形式 dd MMMM yyyy
ではなぜ
var d = new Date("8/10/2009")
alert(d.toLocaleDateString());
2009 年 8 月 10 日
また
var d = new Date("15/10/2009");
2010年3月10日吐く
システムが 8 月 10 日の日付をどこから取得するかは、まだ理由がわからなくても明らかです。しかし、「2009 年 10 月 15 日」から「2010 年 3 月 10 日」になる方法を理解するのは簡単ではありません。見逃した場合に備えて:
ここで、Date オブジェクトが既に "M/d/y" 形式を使用していると判断しているため、最初の部分 (15) が月であるとします。それはどのように処理されますか?何が起こるかというと、年から始まり、日付 "1/1/2009" が作成されます。それから 15 番目の月に進み、2010 年 3 月になります。10 日を足すと、そこに行きます。
その「理由」についてはtoLocaleDateString()
、特定のロケール形式で出力するために呼び出す必要があることに注意してください。しかし、あなたnew Date()
はどこにもロケールについて同様の言及をしていません。したがって、不変の組み込みカルチャを使用しているだけです。
代わりにこれを試してください。
var myDate=new Date();
myDate.setFullYear(2010,0,14);