перетворити iso-дату в мілісекунди в


87

Чи можу я перетворити дату iso в мілісекунди? наприклад, я хочу перетворити цей iso

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

до мілісекунд.

Тому що я хочу порівняти поточну дату з датою створення. А створена дата - це iso-дата.


1
Що ви маєте на увазі саме під терміном "мілісекунди"? Мілісекунди відносно якого моменту часу? Ви маєте на увазі позначку часу UNIX?
Пекка

так само, як в yahoo api, дата відображається мілісекундами 1328796537, а в fb api дата відображається ізо2012-02-10T13:18:45+0000
Робін Карло Катакутан


Пов’язано з @mplungjan, але не точно. Я хочу отримати різницю між цими двома моментами.
Робін Карло Катакутан

Тож скористайтеся посиланням, щоб спочатку перевести їх на дати і зробіть date1.getTime() - date2.getTime()- це все, що вам потрібно
mplungjan

Відповіді:


145

Спробуйте це

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);

РЕДАГУВАТИ

Ви вказали дату ISO. Це також приймається конструктором Dateоб'єкта

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

Редагувати

Найкраще, що я знайшов - це позбутися від зміщення вручну.

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);

Здається, працює. Що стосується проблем із перетворенням рядка ISO в Dateоб'єкт, ви можете посилатися на надані посилання.

РЕДАГУВАТИ

Виправлено помилку з неправильним перетворенням в мілісекунди відповідно до коментаря Prasad19sara.


Так, Date не буде аналізуватися у всіх браузерах. Дивіться мою відповідь на відповідне питання.
Vik David

І дивіться мій коментар до відповіді під вашим;)
mplungjan

Це не працює у Firefoxvar myDate = new Date("2012-02-10T13:19:11+0000");
mplungjan

1
@mplungjan чому ти не використовуєш цей підхід ? Я знаю, що це громіздко, але все одно))
Ойбек,

е-е ... це те велике "Т", що робиться там? Ось чому це не працює @mplungjan.
wle8300

28

Стенограма попередніх рішень

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

Він виконує перетворення типу на льоту і безпосередньо видає дату у мілісекундному форматі.

Інший спосіб - також використання методу синтаксичного аналізу утиліти Date, який виводить лише час EPOCH у мілісекундах.

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

У вас там маленька друкарська помилка, '+'
Стюарт Зіглер,

@ stuart-siegler Це насправді не друкарська помилка, "+" повертає дату в мілісекундах.
LordTribual

@LordTribual "+ new" повертає дату в мілісекундах?
Стюарт Зіглер,

1
@ stuart-siegler Не конкретно "+ new", але "+" робить свою справу і є скороченням, так би мовити. Наприклад, +new Date()повертає 1447857230137час у мілісекундах.
LordTribual

1
Набагато зрозуміліше явно побудувати об'єкт JavaScript Number:, const dateMillis = Number(new Date('2017-09-26T20:24:18.801Z'))але new Date('2017-09-26T20:24:18.801Z').getTime()або new Date('2017-09-26T20:24:18.801Z').valueOf()навіть читабельніший.
David G

5

Ще один варіант станом на 2017 рік - використання Date.parse(). Однак документація MDN вказує, що вона ненадійна до ES5.

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

Докладніше див. У скрипці .


Вбудований парсер також ненадійний після ECMAScript 2011. :-)
РобГ

2

Іншим можливим рішенням є порівняння поточної дати з January 1, 1970, ви можете отримати January 1, 1970по new Date(0);

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

2

Так, ви можете зробити це в один рядок

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

Що протилежне цій функції !?
AG1

1

Іншим рішенням може бути використання синтаксичного аналізатора об’єктів таким чином:

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);

Це перетворюється в мілісекунди так само, як getTime()на Dateоб'єкті


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

Використовуючи це, ми можемо отримати дату в мілісекундах



0

якщо хоче перетворити дату UTC в мілісекунди
синтаксису: Date.UTC (рік, місяць,? день,? години,? хв,? сек,? мілісек);
наприклад:
date_in_mili = Date.UTC(2020, 07, 03, 03, 40, 40, 40);
console.log('miliseconds', date_in_mili);


0

У випадку, якщо хтось захоче взяти лише Час із дати ISO, наступні рекомендації будуть корисними. Я шукав це, і не міг знайти до нього запитання. Тож на випадок, якщо хтось побачить, буде корисним.

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

Вихід буде єдиним часом із isoDate, який становить,

15:27
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.