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.