DateВсе должны были использовать API, хотя большую часть времени обработка дат передается на dayjs или момент.
Но мы обязательно будем использовать нативный API напрямую. В этот раз вы неизбежно воскликнете «какого черта?». Далее давайте посмотрим, где этот API не прост в использовании.
Сначала давайте разберемсяDateКакие типы параметров поддерживаются:
new Date();
new Date(value);
new Date(dateString);
new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);
Поняв тип параметра, используйте его напрямую:
Ничего страшного, как и ожидалось, текущее системное время получается без передачи параметров.
Так давайте напишем это по-другому и передадим строку?
Головка забита вопросительными знаками.Очевидно,прошел в ту же дату,но формат изменился.Почему содержание вывода совсем другое?
Автор объясняет здесь, что когда мы вводим первый формат, это поможет нам разобрать его на всеобщее скоординированное время (UTC), соответствующее текущему часовому поясу, то есть ноль плюс восемь часов.
Когда мы входим во второй формат, внутренний поможет нам разрешить нулевую точку текущего часового пояса.
На самом деле автор немного неуклюж.Если вы не наступите на эту яму, у вас будет эта разница.
Как вы думаете, это закончено? Наив, мы смотрим на это письмо:
Молодец, моя история явно июльская, почему ты разобрал ее на август? ? ?
Это может показаться ошибкой, но на самом деле это старая традиция, и языки программирования давным-давно начинались с 0 в качестве стартового бита в определенные моменты времени:
Все вышеперечисленное можно найти вLinuxчитайте в документации.
Статья еще не закончена, давайте рассмотрим еще один способ написания:
Автор еще может кое-что понять в этом первом способе записи.Ведь год начинается отсчет с 1900, а почему вы поменяли его на 2032, когда он был записан массивом?
Автор здесь не делать археологию, в любом случае, достаточно не писать так.
Обновление: вот объяснение, потому что читатели[32, 10, 4]преобразуется в строку, т.new Date('32, 10, 4'), поэтому результат показан на рис.
Столько ям, сердце устало, буду пользоваться только в будущемnew Date()Ну, но я на самом деле смущен Вы могли бы шагнуть в яму с одним этим.
Например, отдаем интерфейс на стороне сервераsetCookieустановитexpiresПоле представляет время действия этого файла cookie, если вашexpiresполеnew Date()Если он сгенерирован, не забудьте сделать преобразование.
Например, мы используемnew Date()Получив время, вы можете увидеть, что вывод на китайском языке:
В этот момент, если вы потратите это время, чтобы сделатьsetCookieЕсли это так, сервер сообщит оTypeErrorошибка:invalid character in header content ["set-cookie"], это потому, что в установленном нами значении есть китайский язык.
Поэтому нам нужно преобразовать это время, чтобы получить строку времени, не содержащую китайский язык.
Сказав так много, действительно ли родной API бесполезен? Могу ли я просто использовать полную библиотеку? Это неправда, TS39 также знает, что такой адский API не прост в использовании, поэтомуproposal-temporalЭто предложение по решению проблемы представляет собой слияние функций текущей библиотеки обработки данных.
Но я не знаю, когда это предложение будет совместимо с большинством браузеров, давайте продолжим с dayjs.