javascript'te iso tarihini milisaniyeye dönüştür


89

ISO tarihini milisaniyeye dönüştürebilir miyim? örneğin bu iso'yu dönüştürmek istiyorum

2012-02-10T13:19:11+0000

milisaniyeye.

Çünkü şu anki tarihi yaratılan tarihten karşılaştırmak istiyorum. Oluşturulan tarih iso tarihidir.


1
"Milisaniye" ile tam olarak neyi kastediyorsunuz? Milisaniye, zamanda hangi noktaya göre? UNIX zaman damgasını mı kastediyorsunuz?
— Pekka

aynı yahoo api'de olduğu gibi, tarih milisaniye olarak gösterilir 1328796537, ancak fb api'de tarih iso olarak gösterilir2012-02-10T13:18:45+0000
— Robin Carlo Catacutan 10'12


@mplungjan ile ilgili, ancak tam değil. İki zaman arasındaki farkı anlamak istiyorum.
— Robin Carlo Catacutan

Bu yüzden önce bunları tarihlere çevirmek için bağlantıyı kullanın ve yapın date1.getTime() - date2.getTime()- tek ihtiyacınız olan bu
— mplungjan

Yanıtlar:


151

Bunu dene

var date = new Date("11/21/1987 16:00:00"); // some mock date
var milliseconds = date.getTime(); 
// This will return you the number of milliseconds
// elapsed from January 1, 1970 
// if your date is less than that date, the value will be negative

console.log(milliseconds);

DÜZENLE

Bir ISO tarihi sağladınız. DateNesnenin kurucusu tarafından da kabul edilir

var myDate = new Date("2012-02-10T13:19:11+0000");
var result = myDate.getTime();
console.log(result);

Düzenle

Bulduğum en iyi şey, ofsetten manuel olarak kurtulmak.

var myDate = new Date("2012-02-10T13:19:11+0000");
var offset = myDate.getTimezoneOffset() * 60 * 1000;

var withOffset = myDate.getTime();
var withoutOffset = withOffset - offset;
console.log(withOffset);
console.log(withoutOffset);

Çalışıyor gibi görünüyor. ISO dizesini Datenesneye dönüştürmeyle ilgili sorunlara gelince , sağlanan bağlantılara başvurabilirsiniz.

DÜZENLE

Prasad19sara'nın yorumuna göre yanlış milisaniyeye dönüştürme hatası düzeltildi.


Evet, Tarih tüm tarayıcılarda ayrıştırılmayacak. İlgili soruya cevabımı görün.
— Vik David

Ve cevabın altındaki
— yorumuma bakın

Bu Firefox'ta çalışmıyorvar myDate = new Date("2012-02-10T13:19:11+0000");
— mplungjan

1
@mplungjan neden bu yaklaşımı kullanmıyorsun ? Bunun hantal olduğunu biliyorum ama yine de))
— Oybek

uh ... oradaki büyük "T" nin işi bu mu? Bu yüzden @mplungjan çalışmıyor.
— wle8300

28

Önceki çözümlerin kısaltması şudur:

var myDate = +new Date("2012-02-10T13:19:11+0000");

Anında tür dönüşümü yapar ve doğrudan milisaniye formatında tarih verir.

Başka bir yol da, yalnızca EPOCH zamanını milisaniye cinsinden veren Tarih kullanımının ayrıştırma yöntemini kullanmaktır.

var myDate = Date.parse("2012-02-10T13:19:11+0000");

Küçük bir yazım hatası var, '+'
— Stuart Siegler

@ stuart-siegler Aslında yazım hatası yok, '+' Tarihi milisaniye cinsinden döndürür.
— LordTribual

@LordTribual "+ new", tarihi milisaniye cinsinden döndürür?
— Stuart Siegler

1
@ stuart-siegler Özellikle "+ yeni" değil, "+" hile yapar ve sözde kısaltmadır. Örneğin milisaniye cinsinden zaman olan +new Date()döner 1447857230137.
— LordTribual

1
Bu açıkça bir JavaScript Numarası nesnesini oluşturmak için çok nettir: const dateMillis = Number(new Date('2017-09-26T20:24:18.801Z'))ama new Date('2017-09-26T20:24:18.801Z').getTime()ya new Date('2017-09-26T20:24:18.801Z').valueOf()daha da okunabilir.
— David G

5

2017 itibariyle bir başka seçenek de kullanmaktır Date.parse(). MDN en dokümantasyon o öncesinde ES5 için güvenilmez olduğunu, ancak, dikkat çekiyor.

var date = new Date(); // today's date and time in ISO format
var myDate = Date.parse(date);

Daha fazla ayrıntı için kemana bakın.


Yerleşik ayrıştırıcı, ECMAScript 2011'den sonra da güvenilir değildir . :-)
— RobG

2

Bir diğer olası çözüm ile geçerli tarih karşılaştırmaktır January 1, 1970, alabileceğiniz January 1, 1970tarafından new Date(0);

var date = new Date(); 
var myDate= date - new Date(0);

2

Evet, bunu tek satırda yapabilirsiniz

let ms = Date.parse('2019-05-15 07:11:10.673Z');
console.log(ms);//1557904270673

Bu işlevin tersi nedir !?
— AG1

1

Başka bir çözüm de Number nesne çözümleyicisini şu şekilde kullanmak olabilir:

let result = Number(new Date("2012-02-10T13:19:11+0000"));
let resultWithGetTime = (new Date("2012-02-10T13:19:11+0000")).getTime();
console.log(result);
console.log(resultWithGetTime);

Tıpkı milisaniyeye Bu dönüştürür getTime()üzerinde Datenesne


0
var date = new Date()
console.log(" Date in MS last three digit = "+  date.getMilliseconds())
console.log(" MS = "+ Date.now())

Bunu kullanarak milisaniye cinsinden tarih alabiliriz


0

var tarih = yeni Tarih (tarih_dizesi); var milisaniye = tarih.getTime ();

Bu benim için çalıştı!


0

UTC tarihini milisaniye
sözdizimine dönüştürmek istiyorsa : Tarih.UTC (yıl, ay, gün, saat, dakika, saniye, milisaniye);
Örneğin :
date_in_mili = Date.UTC(2020, 07, 03, 03, 40, 40, 40);
console.log('miliseconds', date_in_mili);


0

Birinin yalnızca ISO Tarihinden Saati almak istemesi durumunda , aşağıdakiler yardımcı olacaktır. Bunu arıyordum ve bunun için bir soru bulamadım. Yani birinin görmesi durumunda yardımcı olacaktır.

let isoDate = '2020-09-28T15:27:15+05:30';
let result = isoDate.match(/\d\d:\d\d/);
console.log(result[0]);

Çıktı, isoDate'ten gelen tek zaman olacaktır;

15:27
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.