2012.08.10
Javascript'te normal tarihi unix zaman damgasına nasıl dönüştürebilirim ?
Fiddle: http://jsfiddle.net/J2pWj/
Burada, onu PHP, Ruby, vs'ye dönüştüren birçok gönderi gördüm ... Ama bunu JS içinde yapmam gerekiyor.
2012.08.10
Javascript'te normal tarihi unix zaman damgasına nasıl dönüştürebilirim ?
Fiddle: http://jsfiddle.net/J2pWj/
Burada, onu PHP, Ruby, vs'ye dönüştüren birçok gönderi gördüm ... Ama bunu JS içinde yapmam gerekiyor.
unix timestamp
tüm mühendislik ve bilgisayar bilimi için çok temel. Yerleşik kolaylık yöntemi olsaydı. Şu anda kullanıyorumMath.floor((+new Date()) / 1000);
Yanıtlar:
new Date('2012.08.10').getTime() / 1000
Kontrol JavaScript tarihi belgelere .
parseInt((new Date('2012.08.10').getTime() / 1000).toFixed(0))
toFixed(0)
Milisaniyeden saniyeye dönüştürmek için 1000'e böldüğünde tüm ondalık sayıları kaldırmak için öğesini eklemek önemlidir .
.getTime()
Fonksiyon milisaniye cinsinden zaman damgası döndürür, ama gerçek Unix zaman damgaları saniye içinde her zaman vardır.
var d = '2016-01-01T00:00:00.000Z';
console.log(new Date(d).valueOf()); // returns the number of milliseconds since the epoch
Tekli + operatörünü kullanabilirsiniz
(+new Date('2012.08.10')/1000).toFixed(0);
http://xkr.us/articles/javascript/unary-add/ - Tarihler altına bakın.
/
zaten bir matematik operatörü olduğu gibi gerekli değildir . Ayrıca, toFixed
türün önemli olması durumunda sayı değil bir dize döndürür.
var date = new Date('2012.08.10');
var unixTimeStamp = Math.floor(date.getTime() / 1000);
Bu durumda, yalnızca bir tam sayıyı döndürmek (bu nedenle basit bir bölme işe yaramaz) ve ayrıca yalnızca gerçekten geçen saniyeleri döndürmek önemlidir (bu nedenle bu kod kullanılır Math.floor()
ve kullanılmaz Math.round()
).
Date.parse () öğesini kullanabilirsiniz , ancak kabul ettiği girdi biçimleri uygulamaya bağlıdır. Ancak, tarihi ISO biçimine (YYYY-AA-GG) dönüştürebilirseniz , çoğu uygulama bunu anlamalıdır.
Date.parse () Yöntemini kullanarak yapabilirsiniz.
Date.parse($("#yourCustomDate).val())
Date.parse ("03.03.2016") çıktı-> 1456959600000
Date.parse ("2015-12-12") çıktı-> 1449878400000
var datestr = '2012.08.10';
var timestamp = (new Date(datestr.split(".").join("-")).getTime())/1000;
Zaman damgasını PHP'deki ile karşılaştırdıktan sonra, yukarıdakilerin hiçbiri benim saat dilimim için doğru görünmüyor. Aşağıdaki kod bana yaptığım proje için en önemli olan PHP ile aynı sonucu verdi.
function getTimeStamp(input) {
var parts = input.trim().split(' ');
var date = parts[0].split('-');
var time = (parts[1] ? parts[1] : '00:00:00').split(':');
// NOTE:: Month: 0 = January - 11 = December.
var d = new Date(date[0],date[1]-1,date[2],time[0],time[1],time[2]);
return d.getTime() / 1000;
}
// USAGE::
var start = getTimeStamp('2017-08-10');
var end = getTimeStamp('2017-08-10 23:59:59');
console.log(start + ' - ' + end);
Bunu NodeJS'de kullanıyorum ve 'Avustralya / Sidney' saat dilimimiz var. Yani, bunu .env dosyasına eklemek zorunda kaldım:
TZ = 'Australia/Sydney'
Yukarıdakiler şuna eşdeğerdir:
process.env.TZ = 'Australia/Sydney'