(new Date('2012-12-01')).getMonth()
は、11
(getMonth
は0インデックス付け)の代わりに10
です。 Firefox、Chrome、Node.jsでテストしましたなぜこれが起こるのですか?(新しい日付( '2012-12-01'))。getMonth()=== 10?
答えて
タイムゾーンの問題が発生しています。あなたのJSエンジンはその文字列をそれ以上指定されていないのでUTCとして解釈します。 (new Date
によって使用される)specification of Date.parse
から:
文字列文字列の内容に応じて、現地時間、UTC時間、またはいくつかの他の時間帯における時刻と解釈されてもよいです。この関数は、まず、Date Time String Format(15.9.1.15)で呼び出された規則に従って、Stringの書式を解析しようとします。 Stringがその形式に準拠していない場合、関数は実装固有のヒューリスティックまたは実装固有の日付形式に戻ります。
タイムゾーンでは、datetimeはNov 30 2012 19:00:00 GMT-0500
- 11月です。 .getUTCMonth()
を使用すると、12月になるでしょう。しかし、Date.parse
を信用することは決してありません。したがって、Node.jsなどの制限された環境にいない場合は、文字列(正規表現など)を解析してnew Date(Date.UTC(year, month, date, …))
にフィードする必要があります。
私は、様々な状況下で異なった動作をするかもしれない構文解析メカニズムよりも、離散入力を使ってDateオブジェクトを構築することに頼る方が全体的に良いアイデアであることに同意します。 –
実際、この仕様はかなり明確だと思います。セクション15.9.1.15は次のように述べています。「タイムゾーンが存在しないため、オフセット値は「Z」です。」(Chromeは正しいので、Firefoxは間違っています) – sinelaw
OK、修正。 [ES5.1仕様の間違い](https://bugs.ecmascript.org/show_bug.cgi?id=112)のように見える - ISO-8601と一致するように意図されていたES5.1、Firefox&IEはISO-8601と一致します) – sinelaw
エラーは01の前に0が付いています。分かりません。なぜなら、これはなぜですか。ただし、1より前にゼロを削除すると、正しい月(11)が与えられます。
また、何かを意味する場合は、10月に間違った月を与えることを開始します。
短期修正、Firefox's caseために代わり01
私のためではありません。私は 'NaN'を取得し、' 11'では取得しません。 – dbkaplun
1を使用して、少なくとも、RFC2822はdate specificationsがFolding White Spaceによって分離されなければならないと述べています。試してください(new Date('2012 12 01')).getMonth();
セパレータとして-
の使用法は定義されていないようです。
- 1. 日付とJavaScriptの新しい日付
- 2. JavaScriptの日付メソッドの不一致 - getDateとgetMonthの比較
- 3. Firebaseの新しい日付()?
- 4. getDay()、getMonth()、getYear()
- 5. javascriptのカウントダウンタイマー、新しい日付
- 6. なぜ新しい日付今日は今日昨日返す
- 7. 更新日時私はデータベースに日付を更新したい
- 8. C++:10分前の日付時刻インスタンス
- 9. 更新日付ピッカー
- 10. 日付d =新しい日付();実際の日付ではない場合は電話の日付を返します
- 11. ASP.NETアプリケーションのWindows 10の短い日付形式が矛盾しています
- 12. javascript:新しい日付、デフォルト年の設定方法
- 13. 更新日時フィールドの日付部分
- 14. javascriptのgetMonthは先月のメッセージです
- 15. :日付( '2012年1月15日')なぜ新しい - 私は混乱しているが、JavaScriptで新しい日付( '2012-01-15')==2160万
- 16. 文字列の文脈で新しい日付がFirefoxで動作しない
- 17. 新しいMySQLの古い日付比較処理
- 18. Strftimeが正しい日付に更新されない
- 19. についてJavaScriptの新しい日付()メソッドとDate.parse()
- 20. 別のテーブルのMAX日付から日付フィールドを更新
- 21. SafariでJavascriptを使用した新しい日付()
- 22. 前の日付で新しい.txtファイルを作成し、C#の
- 23. 別のビューと日付ピッカーで更新
- 24. C#の日付フィールドの更新
- 25. アンドロイドでの日付形式解析2016年4月18日10:41 AMから04/18/2016 10:41
- 26. javaの0から11までのgetMonth()の日付は、データベース内の検索を混乱させますか?
- 27. mysqlの更新日時列 - 追加10年3月22日と10時間、既存のデータに30分
- 28. Matlabに追加された日付/データがない日付/データの新しい配列を作成
- 29. JavascriptをgetMonth()とのgetDate transions issuse
- 30. jQuery - 日付をフォーマットすると、日付は無効な日付になります
私はFFで試したときに11(期待通り)を返しました。どのブラウザを使用していますか? – nnnnnn
@nnnnnn私はあなたに何を伝えるべきか分からない。 Chrome、Firefox、Node.jsで発生します。 – dbkaplun
私の謝罪;明確化のためにありがとうございます。私は以下の答えを策定しました。 –