2016-04-01 20 views
0

Neden bir tarih ve saat geçirdiğimde bir tarih geçtiğimde new Date() ile 2 farklı tarih alabilirim?Javascript Tarih() geçen tarih ve tarih-saat arasındaki fark

örnek:

Date.parse('2015-03-14') 
 
// 1426291200000 
 
new Date(1426291200000) 
 
// Fri Mar 13 2015 17:00:00 GMT-0700 (PDT) 
 

 
Date.parse('2015-03-14 00:00:00') 
 
// 1426316400000 
 
new Date(1426291400000) 
 
// Fri Mar 13 2015 17:03:20 GMT-0700 (PDT)

+0

'new Date (1426291400000)', göstermiş olduğunuz sonucu üretmiyor .. – Rayon

+0

@RayonDabre Hindistan'dasınız .. Kaliforniya, ABD'deyim ...Farklı saat dilimleri nedeniyle sonuçların aynı olmadığını mı kastediyorsunuz? –

+0

https://jsfiddle.net/zpzswmqr/ – Rayon

cevap

3

Üzgünüm ama henüz yorum yapamayız. string Eğer tarihi biçimi ile, yani göre

ECMAScript 5 ISO-8601 format desteği .Reference bağlantı here

format specified in ECMAScript 2015

uymalı Date.parse() geçmek süre '2015-03-14 00:00:00' yerine '2015-03-14T00:00:00' olmalıdır.

Ve

Date.parse('2015-03-14') zamanı GMT + 00 olan ama eşit olacaktır ikinci iki zaman zaman dilimi GMT + 00 eklerseniz böylece Date.parse('2015-03-14T00:00:00') zaman diliminde yer almaktadır tarihi:

Date.parse('2015-03-14'); 
Date.parse('2015-03-14T00:00:00+00:00'); 
//1426291200000 
+0

[* ECMAScript 2015 *] (http://www.ecma-international.org/ecma-262/6.0/#sec-date-time-string-format) " * Saat dilimi ofseti yok ise, tarih-saat, yerel bir zaman olarak yorumlanır * "ISO 8601 ile uyumludur ve sadece tarih biçimlerine uygulanacak şekilde yorumlanmıştır. Ancak, [* TC39 *] (https://github.com/tc39/ecma262/issues/87) bilgeliklerinde bir saat dilimi olmayan tarih ve saatin yerel olması gerektiğine karar vermiştir, ancak tarih yalnızca UTC olmalıdır. standart desteklemeye çalışıyorlardı. – RobG

1

Neden Bir tarih ve zaman geçtiğimde bir tarih geçtiğimde yeni Date() ile 2 farklı tarih alabilirim?

Tarih yapıcısı dizelerle ayrıştırma (Date.parse ve , bunlar eşdeğerdir) Çünkü büyük ölçüde uygulama bağımlı ve bu nedenle şiddetle karşı tavsiye edilir.

Date.parse('2015-03-14') 
// 1426291200000 
new Date(1426291200000) 
// Fri Mar 13 2015 17:00:00 GMT-0700 (PDT) 

ISO 8601 biçiminde bir tarih

ancak tüm tarayıcılar uyumlu, ES5 uyumlu ve daha sonra (ve UTC, yerel veya daha önceki uygulamalara göre geçersiz) tarayıcılarda UTC olarak kabul edilir. Ayrıca, belirtilen davranış, saat dilimi olmayan tarihlerin yerel olarak ele alınacağını belirten ISO 8601 ile tutarsızdır.
Date.parse('2015-03-14 00:00:00') 
// 1426316400000 
new Date(1426291400000) 
// Fri Mar 13 2015 17:03:20 GMT-0700 (PDT) 

dize '2015/03/14 00:00:00'

nedenle tamamen uygulama bağlıdır ayrıştırma ve yerel veya geçersiz UTC olarak tedavi edilebilir, ISO 8601 ile uyumlu değil. "T" eklenmesi ile uyumlu hale ise:

"2015-03-14T00:00:00" 

bu (uyumlu olmayan uygulamalar konusunda daha önce bahsedilen ihtar kaydedilmiştir) lokal olarak tedavi edilmesi gerekir.

Dizeleri her zaman el ile ayrıştırmanız şiddetle önerilir. Bir kütüphane kullanın, etrafındaki birçok iyi ayrıştırıcıdan biri veya sadece kendi fonksiyonunuzu yazın, 2 veya 3 satır yeterli olmalıdır.

İlgili konular