Normal tarihi unix zaman damgasına dönüştür


113

2012.08.10Javascript'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.



1
NewDate.getTime () / 1000 denediniz mi?
Gareth Parker

@LokiAstari evet, üzgünüm. Aradım ama bulamadım.
Stan

2
Belki bir şeyi kaçırıyorum ama unix timestamptü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);
Mars Robertson

Yanıtlar:


228
new Date('2012.08.10').getTime() / 1000

Kontrol JavaScript tarihi belgelere .


1
Dokümantasyon sayfası için teşekkürler istediğimi yaptım.
Stan

37
Math.floor it or its not a unix zaman damgası (bir ondalık olacaktır)
BT

@ fguillen, Mooseman, bu kodu çalıştırıyorum ve kontrol ediyorum. Unix zaman damgasını bugüne kadar dönüştürdüğümde bana 2012.08.10 yerine 2012.08.09 veriyor. Neden..?
WP Öğrenci

1
@ user2584538, aşağıdaki cevabıma bakın. Ondalık sayıları kaldırmalısınız.
theVinchi

1
@Mentor UNIX süresi milisaniye olarak değil saniye cinsinden ölçülür
Nicu Surdu

62
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.


5
bunun bir sayı değil, bir dize döndürdüğüne dikkat edin.
Capaj

3
İyi nokta, tam sayıya geri dönüştürmek için parseInt () ile sarmaya yanıt değiştirildi.
theVinchi

13

Moment.js api'sine göz atmalısınız, kullanımı çok kolaydır ve birçok yerleşik özelliğe sahiptir.

Sanırım sorunun için şunun gibi bir şey kullanabilirsin:

var unixTimestamp = moment('2012.08.10', 'YYYY.MM.DD').unix();

12

var d = '2016-01-01T00:00:00.000Z';
console.log(new Date(d).valueOf()); // returns the number of milliseconds since the epoch


5

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.


2
Burada sadece iki yorum eklemek istiyorum: tekli toplama + operatörü /zaten bir matematik operatörü olduğu gibi gerekli değildir . Ayrıca, toFixedtürün önemli olması durumunda sayı değil bir dize döndürür.
Laurens

4
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()).



2

Date.parse () Yöntemini kullanarak yapabilirsiniz.

Date.parse($("#yourCustomDate).val())

Date.parse ("03.03.2016") çıktı-> 1456959600000

Date.parse ("2015-12-12") çıktı-> 1449878400000


1
Bu yanıt , Barmar'ın 6 yıl önce verdiği yanıttan nasıl farklılaşıyor ?
Oğlak

1
var datestr = '2012.08.10';
var timestamp = (new Date(datestr.split(".").join("-")).getTime())/1000;

1

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'

0

zaman damgasını unix zaman damgasına dönüştür.

const date = 1513787412; const unixDate = new Date(date * 1000);// Dec 20 2020 (object)

dönüşümden sonra timeStamp değerini almak için const TimeStamp = new Date(date*1000).getTime(); //1513787412000

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.