2016-05-13 13 views
0

Javascriptの日は、私はint型の値からJavaScriptで日付変数を作成すると、私は間違った月を取得int型の値から

var vdate= new Date(parseInt("1438405200000")); 
 
var vmonth = vdate.getMonth() + 1; 
 
alert(vmonth);

間違っている 例では、日付(14384.052億)が2015年8月1日です

var vdate= new Date(parseInt("1438405200000")); 
var vmonth = vdate.getMonth() + 1; 
alert(vmonth); 

アラート7が表示されますが、正しいのは8です。これは一部のPCでのみ発生します。地域の設定などは可能でしょうか?

+1

月のインデックスはゼロです。 –

+0

'parseInt(" 1438405200000 "、10)' –

+1

を使用する可能性があります。[Javascriptの日付が間違って返されます。01日が01の場合](http://stackoverflow.com/questions/25288781/javascript-date-returns-wrong-month- if-day-is-01) –

答えて

0

月が0-11で、1-12ではないためです。 (配列の要素として考えてください。var months = ["January", "February", "March"...])ほか

MDN Docs on Date.prototype.getMonth()

、あなたは5時間以上GMTの背後にあるタイムゾーンになりそうです。 (そのタイムスタンプは2015年8月1日の05:00:00に対応しているため)JavaScriptの日付オブジェクトは現在のタイムゾーンに時刻をローカライズしようとします。 (私の場合、GMT-7)私のためにgetMonth()を使用すると、7ではなく6が返されます。ローカリゼーションが望ましい動作であれば、これは問題ありません。それ以外の場合は、UTC時刻で、特定のUTC表現を取得する場合は、代わりにgetUTCMonth()を呼び出すか、そうでない場合はタイムゾーンオフセットを補正する必要があります。

+0

getUTCMonth()は解決策です。ウェブサイトには異なるタイムゾーンのユーザーがいます – DanielVorph

関連する問題