2011-04-15 26 views

cevap

3

UTC tarih dizgilerinin, dizelerdeki gibi, üst sıradaki değerler en solda göründüğü gibi sözlüksel olarak karşılaştırılabileceğini unutmayın.

var s1 = '2011-03-29 17:06:21 UTC' 
    , s2 = '2001-09-09 01:46:40 UTC'; 
s1 > s2; // => true 
s2 > s1; // => false 

Sen örnek dizesinden tarihi alanlarını ayıklamak ve Date.UTC yöntemini kullanarak milisaniye sayısını döndürebilir:

var getEpochMillis = function(dateStr) { 
    var r = /^\s*(\d{4})-(\d\d)-(\d\d)\s+(\d\d):(\d\d):(\d\d)\s+UTC\s*$/ 
    , m = (""+dateStr).match(r); 
    return (m) ? Date.UTC(m[1], m[2]-1, m[3], m[4], m[5], m[6]) : undefined; 
}; 
getEpochMillis('2011-03-29 17:06:21 UTC'); // => 1301418381000 
getEpochMillis('2001-09-09 01:46:40 UTC'); // => 1000000000000 
+1

Neden düşüş var? Elegance için – maerics

+0

+1, ancak Date.parse, Safari 4.1'de NaN değerini döndürür. Firefox 3.6'da gayet iyi çalışıyor. –

+2

@Vik David: Baş döndürücü Safari için teşekkürler; Daha iyi desteklenmesi gereken ECMA-262 5. Baskıda tanımlanan UTC yöntemini kullanmak için cevabımı güncelledim. Tarih ayrıştırma, JavaScript'te bir acıdır ... – maerics

1

datejs'u kullanmak, UTC dizesini bir Date nesnesine dönüştürmenize yardımcı olur. Bundan sonra, milisaniye almak için tarih nesnesinde .getTime() yönteminin çağrılması sorun olur.

+0

Epoch'tan? Date.js lib dosyasını dahil ettim ve yeni Date ("2011-03-29 17:06:21 UTC") ve Date.parse ("2011-03-29 17:06:21 UTC") 'yi denedim ancak geçersiz veya NaN. – katsuya

0

Sen getDateFromFormat(dateValue, dateFormat)(available here) şöyle kullanabilirsiniz:

getDateFromFormat("2011-03-29 17:06:21","yyyy-MM-dd HH:mm:ss") 

Bu milisaniye çağı süresini döndürür.

1

bu bunu nasıl olduğunu. Nonsese hayır. Date.UTC bir UTC zaman damgası kabul eder ve döner tam olarak bu yapardın Nasıl

var epoch_date = Date.UTC(year,mon,day,hours,min,sec,milisec); 
İlgili konular