Pokud zadáte 0
jako dayValue
v Date.setFullYear
získáte poslední den předchozího měsíce:
d = new Date(); d.setFullYear(2008, 11, 0); // Sun Nov 30 2008
Existuje odkaz na toto chování v mozille. Je to spolehlivá funkce pro různé prohlížeče nebo bych se měl podívat na alternativní metody?
Odpověď
var month = 0; // January var d = new Date(2008, month + 1, 0); console.log(d.toString()); // last day in January
IE 6: Thu Jan 31 00:00:00 CST 2008 IE 7: Thu Jan 31 00:00:00 CST 2008 IE 8: Beta 2: Thu Jan 31 00:00:00 CST 2008 Opera 8.54: Thu, 31 Jan 2008 00:00:00 GMT-0600 Opera 9.27: Thu, 31 Jan 2008 00:00:00 GMT-0600 Opera 9.60: Thu Jan 31 2008 00:00:00 GMT-0600 Firefox 2.0.0.17: Thu Jan 31 2008 00:00:00 GMT-0600 (Canada Central Standard Time) Firefox 3.0.3: Thu Jan 31 2008 00:00:00 GMT-0600 (Canada Central Standard Time) Google Chrome 0.2.149.30: Thu Jan 31 2008 00:00:00 GMT-0600 (Canada Central Standard Time) Safari for Windows 3.1.2: Thu Jan 31 2008 00:00:00 GMT-0600 (Canada Central Standard Time)
Rozdíly ve výstupu jsou způsobeny rozdíly v toString()
implementace, nikoli proto, že se data liší.
Samozřejmě to, že výše uvedené prohlížeče používají 0 jako poslední den předchozího měsíce, neznamená, že v tom budou pokračovat, nebo že to budou dělat prohlížeče, které nejsou uvedeny, ale dodává to důvěryhodnost přesvědčení, že by měl fungovat stejně v každém prohlížeči.