#javascript
#javascript
Вопрос:
Ниже приведен мой код.
let a = "26-Jan-2021 06:02 PM PST";
let d = "27-Jan-2021 07:32 AM IST";
let b = new Date(a).toString();
let c = new Date(a).toISOString();
console.log(c);
let e = new Date(d).toISOString();
console.log(e);
Вывод:
"2021-01-27T02:02:00.000Z"
"Invalid time value"
Вопрос: В чем разница между тем, как JavaScript интерпретирует переменные a и d, что он выдает такие разные выходные данные?
Комментарии:
1. Попробуйте использовать Markdown, чтобы ваш код стал читаемым.
Ответ №1:
Создание объекта Date из строки даты анализирует форматы, распознанные RFC 2822. Хотя он принимает PST
в качестве допустимого (хотя и устаревшего) часового пояса для «Тихоокеанского стандартного времени», он не принимает IST
в качестве допустимого часового пояса в пределах метки времени.
Вместо этого вы хотели бы заменить IST
на GMT 0530
или UTC 0530
(что означает среднее время по Гринвичу / Всемирное координированное время 5 часов 30 минут, определение для стандартного времени Индии):
let c = new Date("26-Jan-2021 06:02 PM GMT 0530").toISOString()
console.log(c) // => '2021-01-26T12:32:00.000Z'
Ответ №2:
Насколько я понимаю, new Date()
конструктор для строки временных меток принимает временные метки, совместимые с IETF RFC 2822. На странице 31 RFC перечислены приемлемые часовые пояса. IST не является одним из них. Следовательно, ваша строка даты недействительна.
Ответ №3:
использовать GMT 0530
вместо IST
как IST не идентифицируется как часовой пояс в JS (не распознается RFC-2822)
let dateSample = new Date("26-Jan-2021 06:02 PM GMT 0530").toISOString()
console.log(dateSample)
отпечатки: 2021-01-26T12:32:00.000Z