Как преобразовать строку в метку времени с моментом js? - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть строка " 18/04/19 17:17 EDT ", которая представляет дату. Я использую момент и надстройку момент-часовой пояс , и мне нужно преобразовать это жало в отметку времени.

Я пытаюсь что-то как:

var date = moment("18/04/19 5:17 PM EDT").format('DD/MM/YY h:m a z');
alert(date);

Но это не работает и говорит "недопустимая дата".

1 Ответ

2 голосов
/ 19 апреля 2019

Обратите внимание, что moment(String):

При создании момента из строки мы сначала проверяем, соответствует ли строка известным ISO 8601 форматам, а затем проверяем, соответствует ли строка формату RFC 2822 Дата / время , прежде чем отбрасывать к отступлению от new Date(string), если известный формат не найден.

Предупреждение: Поддержка синтаксического анализа строк в браузере несовместима . Поскольку не указано, какие форматы должны поддерживаться, то, что работает в некоторых браузерах, не будет работать в других браузерах.

Для получения согласованных результатов при анализе чего-либо, кроме строк ISO 8601, следует использовать String + Format .

, поэтому вы получаете Invalid Date, потому что ваш ввод не соответствует ни формату ISO 8601, ни RFC 2822, поэтому вы должны указать параметр формата при его анализе.

moment(String, String) не принимает токен 'z', поэтому вы должны использовать момент-часовой пояс для анализа ввода с помощью зоны, см. Разбор в зоне документы:

Конструктор moment.tz принимает все те же аргументы, что и конструктор момента, но использует последний аргумент в качестве идентификатора часового пояса .

Вы можете использовать format() и другие методы, перечисленные в разделе Отображение документов (например, valueOf()), чтобы отобразить значение момент объекта.

Вот живой пример:

var date = moment.tz("18/04/19 5:17 PM EDT", 'DD/MM/YY h:m A', 'America/New_York');
console.log(date.valueOf()); // 1555622220000
console.log(date.format());  // 2019-04-18T17:17:00-04:00
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data-2012-2022.min.js"></script>

В качестве примечания, помните, что сокращения часовых поясов неоднозначны, см. здесь для дополнительной информации.

...