JavaScriptのgetDateを返します間違った日
-
21-09-2019 - |
質問
以下のスクリプトを返します20はなく21!
var d = new Date("2010/03/21");
document.write(d.getDate());
なぜですか?このJavaScriptグ?
解決
Date.parse
の方法は、(new Date(string)
と等価で実装依存であります Date.parse(string)
に)。
この形式は、現代のブラウザで利用できるようになりますが、あなたはブラウザが正確にご希望の形式を解釈することを確認し、100%にすることはできません。
私はあなたの文字列を操作することをお勧めいたしますと、年間でDateコンストラクタを使用して、月、日の引数なります:
// parse a date in yyyy-mm-dd format
function parseDate(input) {
var parts = input.match(/(\d+)/g);
// new Date(year, month [, date [, hours[, minutes[, seconds[, ms]]]]])
return new Date(parts[0], parts[1]-1, parts[2]); // months are 0-based
}
他のヒント
これは
の、時間の問題夏時間のローカルタイムを使用します。私はブラジルと10月 - 21から2012に住んでいる私の国のほとんどで夏時間の開始で、10月 - 21から2012までのように、ローカルの日付0の間:0と1:0ブラジルに存在しません!
一部の人々はそれが動作することをここにコメント。正しいか間違っている時間のリターンは、ローカルユーザーの国によって異なりますので、それは起こります。
を参照してください: http://www.timeanddate.com/news/時間/ブラジル - DST-2012.htmlする
は、ブラジル、2012年にJavaがDSTは、10月 - 14から始まると考えている(実際には1週間後に開始)
var dt = new Date(2012,9,14);
alert(dt.getHours());
が生成の1 を
を参照してください: http://www.timeanddate.com/time/dst/2013。 HTML の
そこには夏時間が変化していないが、あなたは抽象的な時間の種類を使用しているため、ソリューションを使用UTC(協定世界時)の時刻、です。最も実用的な用途では問題はありません。
var dt = new Date( Date.UTC(2012, 9, 21, 8, 5, 12));
alert( (dt.getUTCMonth()+1) + '/' + dt.getUTCDate() + '/' +
dt.getUTCFullYear() + " " + dt.getUTCHours()+ ':' +
dt.getUTCMinutes() + ':' + dt.getUTCSeconds() );
私は上に示してきたように、誰かが、ちょうどダミー時間値の大きいを置くか、1よりも等しく、時間、分、秒を使用していない場合、それは簡単です。
それは現地時間、またはその逆としてUTCとして文字列引数と結果のDate
オブジェクトを処理しています任意のチャンス?それはそれをオフに投げることができました。 d.getDate()
にd.getUTCDate()
比較ます。
私はまたgetDate()
が期待値を返すことgetUTCDate()
による1日の偏差が、私のノートを取得します。問題はFF 3.6.12に見られたが、Chromeで実行されている同じコードは大丈夫だった。
私のデバッグコード:
var date="2010-11-04";
alert(date);
var d = new Date(date)
alert(d.toDateString()+": "+ d.getDate()+" UTC "+d.getUTCDate());
これは出力(Firefoxの)を得た。
水曜日2010年11月3日:3 UTC 4
Chromeは結構です。おそらくバグが、より可能性の高い時間帯/ UTCパラメータの問題 - 何かがどこかにアップされるように。タイムゾーンは、その日に変更された場合、私はそれが何であるかを知っていれば、PHPのdate()
はかかわらず、などBuggered日に23時間を返します。どこのことを思い出すます。
私は、ブラウザのアドレスバーに次のコードを書き、結果は21
javascript:alert(new Date("2010/03/21").getDate())
Javascriptのバグのようなものを使用すると、特定の実装を参照したいと思うので、多くのJavascriptの実装があるので、ありません。
私がテストした実装では、クロム4.1.249ました。あなたは何ですか?
この時間帯するって大きな役割を果た。の Date()
機能追加のお時間帯に日まえて入力します。例えば:また、入力のようになります:
alert(new Date("2018-09-15"));
の結果というのは: 土月15日2018年05:30:00GMT+0530(インド時間)
のタイムゾーン +05:30
が私の入力の時間(行き以上の結果..05:30:00は追加されます今思えば、時間帯以上0[国ブラジル、メキシコ、チリなど---。このタイムゾーン未満0]で追加日入力(例:タイムゾーンをUTC−05:00になります。で差し引か-5:00からの日付。
VahidN, また結果を 20
ている為、時間帯以上0(-1è :
00`など)
解決には リセットタイムゾーンを指定して0.このように:
日付("2010-03-21T00:00:00").
私は、Firefox 3.6およびIE 8でこのコードをテストします:
<script type="text/javascript">
var d = new Date("2010/03/21");
document.write(d.getDate());
</script>
これは、右の日付を見せている:21
詳細については、、見て: JavaScriptのDateオブジェクトのの
JavaScriptの互換性の考慮事項は、ウィキペディアでをnoreferrer">また、
http://jsbin.com/aqoki3/edit の - ここにコードをあなたは私が得る投稿21
。そのないJSバグので。 (JSの)お使いのブラウザの実装ではたぶん、そのバグを修正しました。
//developer.mozilla:だから、正しく日付のvarの使用new Date(year, month, date [, hour, minute, second, millisecond ])
( HTTPSを初期化します。 ORG / EN / Core_JavaScript_1.5_Reference /オブジェクト/日に)。
この方法は、あなたは必ず一日は、あなたが暗黙的に21に設定becouse 21であることになります。
私は、firfox、サファリ、クロム、オペラやIEで同じ日付(21)を取得します 私は、文字列「2010/03/21」または整数の日付の引数(2010,2,21)を使用するかどうか。
私はWindowsマシンとブラウザの新しいバージョンを使用しています -
あなたはあなたのクライアントは、文字列から別の日付を解析するかどうかを確認するためにテストすることができ、 問題のために私が見る唯一の場所であるこれます。
if(new Date("2010/03/21")- new Date(2010,2,21)){
alert(new Date("2010/03/21"));
}
を確認してください6月を見ている場合は、使用している数の月は、-1である、あなたは月の(6-1)を行う必要があり、とき
を作成 var date_obj = new Date(y,(m-1),d);
(原因異なるJavaScriptの実装に)と(他のマシンから新しい日に、それ以外の場合は、他のにブラウザから異なって解釈される文字列、日付、タイムゾーンを含むように、文字列の必要性を、与えた場合、ローカルタイムゾーンの違いによるもの)
new Date('2017-07-31T10:00:00-0500');
の代わりに
new Date('2017-07-31T10:00:00');
あなたの日付のような文字列引数ショーを渡すことによって、Dateオブジェクトを作成しますcant'tます。
この方法のように作成します。
var str_date = "2010/03/21";
var date = new Date();
var date_elements = str_date.split("/");
date.setYear(date_elements[0]);
date.setMonth(date_elements[1]);
date.setDay(date_elements[2]);
alert(date.toString);
date.toString
方法に注意を払います。それは完全な日付文字列を返します。
date.getDate
だけで、あなたにその日の日を与えるでしょう。
Dateオブジェクトの詳細は、参照してくださいwww.w3school.com