SORU
9 EYLÜL 2014, Salı


new Date() 31 Aralık 2014 diyor 1 Aralık yerine ayarlayın

Tarih bir nesne bir dize dönüştürmek için çalışıyorum, ve 31 yerine 31 Aralık hariç her gün burada nesne ile diyor 1 Aralık çalışır. Neden hiçbir fikrim yok. Burada JavaScript şifrem:

var dt = new Date();
dt.setDate("31");
dt.setMonth("11");
dt.setFullYear("2014");

ama benim değişken değeri:

Mon Dec 01 2014 11:48:08 GMT 0100 (Paris, Madrid)

Eğer başka bir tarih için aynı şeyi yaparsam, benim nesne uygun değeri döndürür. Yanlış yaptığım hakkında bir fikrin var mı?

CEVAP
9 EYLÜL 2014, Salı


setMonth 10* *lazım önce: (31 günden daha az bir Ay için güvenli değil)

var dt = new Date();
dt.setFullYear(2014);
dt.setMonth(11);
dt.setDate(31);

Ve setMonth'ın ikinci parametre de tarih ayarlamak için kullanılabilir.

var dt = new Date();
dt.setFullYear(2014);
dt.setMonth(11, 31);


Eğer herhangi bir argüman yapıcı için verdiyse, kullanıngeçerli tarih ve saatsistem ayarlarına göre.

Yani, ayrı ayrı setMonth setDate kullanarak hala beklenmedik sonuçlara neden olur.

Değerleri ayarlanırmantıksal aralığı daha büyükdeğeri otomatik olacakbitişik değere ayarlanabilir.

Örneğin, eğer bugün 2014-09-30 o zaman

var dt = new Date();
dt.setFullYear(2014); /* Sep 30 2014 */
dt.setMonth(1);       /* Mar 02 2014, see, here the auto adjustment occurs! */
dt.setDate(28);       /* Mar 28 2014 */

Bunu önlemek için, değerleri doğrudan oluşturucu kullanarak ayarlayın.

var dt = new Date(2014, 11, 31);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ben Schoon

    Ben Schoon

    23 Kasım 2012
  • How to Cook ?

    How to Cook

    31 Ocak 2007
  • Watcher3223

    Watcher3223

    15 Kasım 2007