Я добавлю свой ответ, если я его неправильно понял, тогда кто-то может прокомментировать.
Если я отправлю new Date().toISOString()
кому-то в другом часовом поясе, тогда время для этого человека будет другим.Если я попрошу этого человека позвонить по скайпу в 13:00 по его времени, это может означать, что это 18:00 по местному времени.
Так что, если человек, отправляющий мне строку даты, из Великобритании и отправляет мне ...T13:00.000Z
Для меня это означает 18:00.
Вот как вы можете правильно получить время в миллисекундах от вашей полуночи даты, конвертированной в ваше местное время:
const date = new Date(2007, 1, 1, 0, 0, 2).toISOString();
console.log('date:',date);
console.log('date in your local time:',new Date(date).toString());
const millisecondsFromMidNight = (date) => {
var dateObject = new Date(date);
return (
dateObject.getTime() -
new Date(
dateObject.getFullYear(),
dateObject.getMonth(),
dateObject.getDate(),
0,
0,
0,
0,
).getTime()
);
};
console.log(millisecondsFromMidNight(date));
Пример, в котором DST вступает в силу:
var minutesFromMidnight = (date) => {
var dateObject = new Date(date);
console.log('date:', date);
console.log(
'date in your local time:',
dateObject.toString(),
);
return (
dateObject.getTime() -
new Date(
dateObject.getFullYear(),
dateObject.getMonth(),
dateObject.getDate(),
0,
0,
0,
0,
).getTime()
);
};
console.log(
minutesFromMidnight('2018-10-28T00:59:00.000Z') / 60000,
);
console.log(
minutesFromMidnight('2018-10-28T01:01:00.000Z') / 60000,
);