質問

私のロケール設定があります:

短い日付形式: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日の日付を取得する場所。しかし、それは「15/10/2009」から「2010年3月10日、」取得する方法を理解することはそれほど簡単です。だから、場合にあなたはそれを逃します:

Dateオブジェクトが既に最初の部分(15)ヶ月であるので、それは、「M / D / Y」の形式を使っていることを決定した瞬間を仮定する。それはそれをどのように扱うのでしょうか?何が起こるかというと、それは一年で始まり、日付「2009年1月1日」を構築することです。それは、あなたが行く10日間、そこを追加あなたの2010年3月を与えるために、15月に進みます。

「なぜ」それのために、あなたは特定のロケールの形式で出力にそれを得るためにtoLocaleDateString()を呼び出すために持っていたことに気づきます。しかし、あなたのnew Date()は、どこでも、ロケールのない同様の言及していません。だから、ちょうどそれが不変内蔵の文化だ使用しています。

他のヒント

の代わりにこれを試してみてください。

var myDate=new Date();
myDate.setFullYear(2010,0,14);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top