Varsayılan olarak, MomentJS yerel saatte ayrıştırır. Yalnızca bir tarih dizesi (saat içermeyen) sağlanırsa, saat varsayılan olarak gece yarısı olur.
Kodunuzda, yerel bir tarih oluşturursunuz ve ardından bunu UTC saat dilimine dönüştürürsünüz (aslında, an örneğini UTC moduna geçirir ), böylece biçimlendirildiğinde ileri kaydırılır (yerel saatinize bağlı olarak) veya geriye doğru.
Yerel saat dilimi UTC + N ise (N pozitif bir sayı) ve yalnızca tarih içeren bir dizeyi ayrıştırırsanız, önceki tarihi alırsınız.
İşte bunu açıklamak için bazı örnekler (benim yerel saat farkım DST sırasında UTC + 3'tür):
>>> moment('07-18-2013', 'MM-DD-YYYY').utc().format("YYYY-MM-DD HH:mm")
"2013-07-17 21:00"
>>> moment('07-18-2013 12:00', 'MM-DD-YYYY HH:mm').utc().format("YYYY-MM-DD HH:mm")
"2013-07-18 09:00"
>>> Date()
"Thu Jul 25 2013 14:28:45 GMT+0300 (Jerusalem Daylight Time)"
Tarih-saat dizesinin UTC olarak yorumlanmasını istiyorsanız, bunu açıkça belirtmelisiniz:
>>> moment(new Date('07-18-2013 UTC')).utc().format("YYYY-MM-DD HH:mm")
"2013-07-18 00:00"
ya da Matt Johnson'ın cevabında bahsettiği gibi, belirsizliği önlemek için biçim dizesini ikinci argüman olarak kullanarak ilk etapta bir UTC tarihi olarak ayrıştırabilir ( ve muhtemelen yapmalısınız ) moment.utc()
.
>>> moment.utc('07-18-2013', 'MM-DD-YYYY').format("YYYY-MM-DD HH:mm")
"2013-07-18 00:00"
Diğer yoldan gitmek ve bir UTC tarihini yerel bir tarihe dönüştürmek için local()
aşağıdaki yöntemi kullanabilirsiniz :
>>> moment.utc('07-18-2013', 'MM-DD-YYYY').local().format("YYYY-MM-DD HH:mm")
"2013-07-18 03:00"
toString()
sonra ihtiyacın olduğunu sanmıyorumformat()
(zaten bir dize döndürüyor).