2012-08-07 14 views
13

Her biri zaman damgası olan, bir JSON nesnesine gruplamak istediğim, bir sürü nesnem var.Javascript Tarih - sadece tarihi, zaman göz ardı ederek ayarla?

var visitDate = new Date(parseInt(item.timestamp, 10)); 
visitDate.setHours(0); 
visitDate.setMinutes(0); 
visitDate.setSeconds(0); 

O kadar saklamak için kullanıyorum ozaman:

myObject = { 
    "06/07/2012" : [ 
     { 
      "timestamp" : "07/06/2012 13:30", 
      ... 
     }, 
     { 
      "timestamp" : "07/06/2012 14:00", 
      ... 
     } 
    ], 
    "07/07/2012 [...] 
} 

Her damgası nesneyi test ve kullanıyorum, tarihi almak için: nihai hedefi böyle bir şeydir JSON nesnesi için bir ad. Dağınık görünüyor ve eminim ki, işleri yapmanın daha kolay bir yolu olmalı.

Tavsiye/öneriler welcomed !!

+0

Yeni Tarih hayal edemiyorum (parseInt ("07/06/2012 13:30", 10)); 'çalışırdı. Yoksa bir şey mi özlüyorum? – KooiInc

+0

Evet, haklısınız - özür dilerim, bu mevcut kodumdan bazılarına yapıştırılmış ve okunaklı okunmamış! Geçerli kod, zaman damgasını 'çağın milisaniye' biçiminde saklar, böylece orijinal bağlamında daha anlamlı olur ... – Paul

+0

Tamam, anlıyorum. – KooiInc

cevap

23

.toDateString() nasıl olur?

Alternatif olarak .getDate(), .getMonth() ve .getYear()'u kullanın?

Aklımda, işleri tarihe göre gruplandırmak istiyorsanız, yalnızca tarihi değil, ayarlamayı istiyorsunuz. Tarih alanına erişmenin bazı ayarlanmış yolu sayesinde, bunları karşılaştırabilir ve gruplandırabilirsiniz, değil mi? Burada

Kontrol dışarı tüm eğlenceli Tarihi yöntemleri: MDN Docs


Düzenleme:

var newDate = new Date(oldDate.toDateString()); 

tarihten en yapıcı şudur: Bir tarih nesnesi olarak tutmakistiyorsanız, sadece bunu Dizeleri ayrıştırma konusunda oldukça akıllıdır (ancak bir ton uyarı olmadan, ancak bu oldukça tutarlı bir şekilde çalışmalıdır), böylece eski Tarih'i alıp herhangi bir zamana gerek kalmadan sadece tarihe yazdırmak aynı yönde etkilenecektir. ginal yazı. Eğer fazladan tarih nesnesi yaratmak sakıncası yoksa

+0

Muhtemelen bunu yapmak daha mantıklı bir yoldur, bir Tarih nesnesi olarak bırakmayı düşünüyordum, ancak JSON'da metin olarak saklanmış olsa da sanırım! '.toDateString()' işlevini kullanmamanın asıl nedeni, alanda boşluk olması konusunda emin değildi. Önemli olanları gerçekten de düşünmeyin. – Paul

+1

Not: * Tam * listesinin listesini bulmak için bir miktar aşağı kaydırın. Çok fazla toString varyantı, kafanız patlayacak. –

+0

ooh '.valueOf()' - bu da yararlı! Teşekkürler! – Paul

7

, sen deneyebilirsiniz:

var tempDate = new Date(parseInt(item.timestamp, 10)); 
var visitDate = new Date (tempDate.getUTCFullYear(), tempDate.getUTCMonth(), tempDate.getUTCDate()); 

Ben zaman olmadan geçerli ayın bir tarih almak çok benzer bir şey.

+3

fantezinize uyuyorsa, bu durumun BUTCDate olması gerektiğini düşünüyorum. getUTCDay haftanın gününü döndürür (0,6). getUTCDate ayın gününü döndürür (1,31) –

İlgili konular