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.