#javascript #datetime #luxon
#javascript #дата и время #luxon
Вопрос:
Я использую luxon для преобразования дат в миллисекундах в соответствии с временной зоной. Я получаю время в формате ISO, но когда я применяю luxon для преобразования дат, это происходит, но когда я анализирую его за миллисекунду, я не получаю разницы в миллисекундах с текущей и указанной временной зоной.
console.log("== Local Zone == ");
console.log(DateTime.local().zoneName);
const sd = DateTime.fromISO("2019-07-27T07:37:49.211Z");
console.log(sd.toMillis());
console.log("== Updated Zone == ");
Settings.defaultZoneName = "America/Chicago";
console.log(DateTime.local().zoneName);
const hd = DateTime.fromISO("2019-07-27T07:37:49.211Z");
console.log(hd.toMillis());
Любая помощь / предложение будут с благодарностью приняты.
Ответ №1:
Вы получаете то же значение ( 1564213069211
), потому что входная строка ( "2019-07-27T07:37:49.211Z"
) заканчивается на Z
то, что обозначает смещение UTC.
Таким образом, Luxon просто учитывает смещение UTC 0 и отображает результаты соответствующим образом.
const DateTime = luxon.DateTime;
const Settings = luxon.Settings;
console.log("== Local Zone == ");
console.log(DateTime.local().zoneName);
const sd = DateTime.fromISO("2019-07-27T07:37:49.211Z");
console.log(sd.toMillis());
const sdNoZ = DateTime.fromISO("2019-07-27T07:37:49.211");
console.log(sdNoZ.toMillis());
console.log("== Updated Zone == ");
Settings.defaultZoneName = "America/Chicago";
console.log(DateTime.local().zoneName);
const hd = DateTime.fromISO("2019-07-27T07:37:49.211Z");
console.log(hd.toMillis());
const hdNoZ = DateTime.fromISO("2019-07-27T07:37:49.211");
console.log(hdNoZ.toMillis());
<script src="https://cdn.jsdelivr.net/npm/luxon@1.25.0/build/global/luxon.js"></script>
Комментарии:
1. Спасибо, нужно ли нам удалять z из строки, чтобы получить конкретную дату часового пояса?
2.
"2019-07-27T07:37:49.211Z"
имеет «полную» информационную дату, время часовой пояс и представляет данный момент времени (см. Конвертер часовых поясов здесь ). Преобразование его в миллисекунды всегда будет отображаться1564213069211
. Удаление Z приведет к удалению информации о часовом поясе, поэтому она будет представлять другой момент времени в соответствии с принятым во внимание часовым поясом.