2014-06-04 16 views
10

1 ay önce zamanın unix zaman damgasını nasıl alabilirim?Javascript 1 zamandan önce zaman damgası ver

Ben Sen Moment.JS bakmak olabilir Date()

+1

"Bir ay önce" ne demek istiyorsun? 30 gün öncesine denk mi? Bir önceki ayda aynı gün? İkincisi, önceki ayın 31'inci günü nasıl idare edilirse <31 gün? Ne istediğini anladığında, işe yaraması için yeterince kolay olmalı. –

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date – japrescott

+3

'var dt = new Date(); dt.setMonth (dt.getMonth() - 1); ' –

cevap

16

Basit bir cevabı şudur: 31 Temmuz itibaren bir ay çıkarma eğer 1 Temmuz dönüştürülecektir 31 Haziran, olsun

// Get a date object for the current time 
var d = new Date(); 

// Set it to one month ago 
d.setMonth(d.getMonth() - 1); 

// Zero the hours 
d.setHours(0, 0, 0); 

// Zero the milliseconds 
d.setMilliseconds(0); 

// Get the time value in milliseconds and convert to seconds 
console.log(d/1000|0); 

Not söyledi. benzer şekilde, 31 Mart 31 Şubat'a gidecek ve bu da bir yıl içinde olup olmamasına bağlı olarak 2 veya 3 Mart'a dönecek.

Yani ay kontrol etmek gerekir:

var d = new Date(); 
var m = d.getMonth(); 
d.setMonth(d.getMonth() - 1); 

// If still in same month, set date to last day of 
// previous month 
if (d.getMonth() == m) d.setDate(0); 
d.setHours(0, 0, 0); 
d.setMilliseconds(0); 

// Get the time value in milliseconds and convert to seconds 
console.log(d/1000 | 0); 

JavaScript saat değerleri 1970-01-01T00 itibaren milisaniye olan Not olduğunu: 00: UNIX saat değerleri aynı Dönemden beri saniye cinsinden olduğunu, oysa 00Z, Bu nedenle, 1000.

+1

Merak eden herkes için, evet, negatif bir değer için d.setMonth yapabilirsiniz (Ocak ayında). Çalışılan hoş bir sürpriz oldu ve bu kod örneği hala bu durumda çalışıyor. – ryanm

+0

Anonim [Topluluk] (http://stackoverflow.com/users/-1/community) işlemi, milisaniye sıfıra sığan bir satır ekledi, ancak kesildikleri için gerekli değildir. Eğer gerekliyse, diğer zaman bölümlerinin sıfırlandığı ifadede yapılmalıdır: 'd.setHours (0, 0, 0, 0);' – RobG

11

kullanmak gerekir biliyorum. Kullanışlı tarih yöntemleri ile ilgili bir sürü vardır.

Sen yapabilirdi:

moment().subtract('months', 1).unix() 
4
var d = new Date(); 

Ve bir ay öncesine ay ayarlayın. (DÜZENLENMİŞ)

d.setMonth(d.getMonth()-1); 
+0

Haklısınız. benim hatam. –