Дата и время — обязательные курсы, которые невозможно обойти в процессе программирования. К счастью JavaScript
подготовил для нас встроенный объект Date (дата). С помощью этого объекта мы можем создавать, хранить, изменять, измерять время, печатать и выполнять другие базовые операции. Это один из обязательных курсов для каждого программиста JavaScript
.
аналогично созданию обычных объектов. Мы можем использовать new Date()
для создания объекта Date
, а также можем передать некоторые параметры инициализации во время создания.
без параметров:
let now = new Date()console.log(now).
Результаты выполнения кода следующие:
Здесь просто выводится конкретное время выполнения кода: 2022年6月22日19点25份24秒
.
создает объект даты с параметрами в миллисекундах, где milliseconds
относятся к количеству миллисекунд с момента UTC+0 1 января 1970 года (1 миллисекунда = 1/1000 секунды).
//Создаем время, например 1970.1.1, точка времени 0 миллисекунд, пусть jan01_1970 = новая дата (0) console.log(01_января 1970) //Создаем время на 3 дня позже, чем момент времени 1.1 в 1970 году (3 дня * 24 часа * 3600 секунд * 1000 миллисекунд) let jan04_1970 = новая дата (3 * 24 * 3600 * 1000)
Результаты выполнения кода
Console.log(jan04_1970):
milliseconds
— это количество миллисекунд, прошедших с 00:00:00 1 января 1970 года, или это называется меткой времени .
Временная метка — это простое цифровое представление даты. Обычно для создания даты мы используем new Date(milliseconds)
. Если у нас уже есть объект Date
, мы можем использовать date.getTime()
чтобы получить временную метку, соответствующую дате.
Примечание.
Китай находится в зоне 8, поэтому время в приведенном выше примере не 00:00:00, а 08:00:00,
Временная метка может быть не только целым числом, но и отрицательным числом, например:
//1969-12-31 00:00:00let dec31_1969 = new Date(-24 * 3600 * 1000)console.log(dec31_1969)
code результат выполнения:
Еслииспользует временную метку каждый раз при создании, это может быть неудобно, поскольку вычисление временной метки все еще немного сложно.
Мы также можем использовать строку времени для создания времени, например:
let date = new Date('2022-06-22 00:00:00') console.log(date)
результаты выполнения кода:
year
— — должно быть четырехзначным числомmonth
— — [0,11]
, 0
означает1
;hours/minutes/sec/ms
— значение по умолчанию — 0,например:
let date = new Date(2022,6,22,20,35,33)console.log(date)
результаты выполнения кода:
Мы также можем указать количество миллисекунд:
let date = new Date(2022,6,22,20,35,33,777)console.log(date)
Если у нас есть объект Date
, мы можем передать построенный -в методе объекта Date
получить часть времени, например год, месяц, дату и т. д.
Например, у нас есть date
:
let date = new Date(2022,5,22,20,35,33)
getFullYear()
получает год, date.getFullYear()
возвращает 2022
getMonth()
месяц, date.getMonth()
возвращает 5
, что соответствует 6
;getDate()
получает дату текущего месяца, date.getDate()
возвращает 22
;getDay()
получает день недели, в котором указано текущее время, date.getDay()
возвращает 3
;Примечание.
- Все приведенные выше даты основаны на местных датах. Например, я нахожусь в часовом поясе Китая.
- Чтобы получить год, вы должны использовать
getFullYear
,getYear
вернет двухзначный год.
Мы также можем получить время в часовом поясе 0
, то есть времени UTC
, что соответствует getUTCFullYear()
и getUTCMonth()
, getUTCDay
и т. д. Просто вставьте UTC
после get
.
Например:
let date = new Date(2022,5,22,20,35,33)console.log(date.getHours(),date.getUTCHours())
результаты выполнения кода:
Ночью также можно увидеть, что разница между часовым поясом Китая и часовым поясом 0
составляет 8
часов.
getTime()
возвращает временную метку даты, и метод не имеет режима UTC
;getTimezoneOffset()
возвращает разницу во времени между местным часовым поясом и часовым поясом 0
в минутах, и режим UTC
не устанавливаетсямы также можем установить дату с помощью метода объекта Date
. Определенная часть:
setFullYear(year, [month], [date])
устанавливает год (месяц, день)setMonth(month, [date])
устанавливает месяц (день)setDate(date)
устанавливает дату (день месяца)setHours(hour, [min], [sec], [ms])
Устанавливает часы (минуты, секунды, миллисекунды)setMinutes(min, [sec], [ms])
Установить минуты (секунды, миллисекунды)setSeconds(sec, [ms])
Установить секунды (миллисекунды)setMilliseconds(ms)
Установить миллисекундыsetTime(milliseconds)
(используйте количество миллисекунд с 1970-01-01 00:00:00 UTC+0
для установки всей даты)Среди вышеперечисленных функций только setTime()
не поддерживает вариант UTC
.
Date
в JavaScript
имеет функцию автоматической калибровки, которая обеспечивает нам большое удобство при расчете времени.
Например:
let date = new Date(2022,5,38)//Обратите внимание на результаты выполнения кода 38console.log(date) здесь
:
По результатам выполнения мы видим, что «38 июня 2022 года» не вызвало ошибку в программе, а преобразовало дату в «8 июля 2022 года».
В приведенном выше случае было подтверждено, что в JavaScript
даты, выходящие за пределы диапазона, будут автоматически назначены объектом Date
. Таким образом, мы можем использовать объект Date
для очень удобного расчета дат.
Например, мы можем складывать и вычитать год, месяц и день даты:
let date = new Date(2022,5,23)//Текущее время — 2022-6-23date.setDate(date.getDate() + 8)//Рассчитываем время через восемь дней после
выполнения кода console.log(date):
Точно так же мы можем использовать метод date.setSeconds()
для вычисления даты в секундах.
и Date
дат аналогичен возвращаемому значению date.getTime()
, которое представляет собой значение в миллисекундах:
let date = new Date()console.log(+date)
code Результат выполнения:
Поскольку сущность времени — это число, мы также можем выполнять расчеты разницы во времени в ms
(миллисекундах).
Например:
let date1 = new Date(2022,5,23)let date2 = new Date(2022,5,24)console.log(`Разница во времени составляет ${date2-date1}ms`)
Результат выполнения кода: :
Если мы хотим получить текущее время, лучше использовать метод Date.now()
. Этот метод вернет временную метку текущего времени без создания дополнительных объектов Date
, что полезно для экономии памяти и сбора мусора, а код проще.
Например:
let Begin = Date.now()for(let i = 1;i<100000;i++){ let num = i * i * i;}let end = Date.now()console.log(`consume time ${end - start}ms`)
результаты выполнения кода:
Метод Date.parse()
может прочитать строку даты и преобразовать ее в метку времени, но строка должна соответствовать определенным правилам: YYYY-MM-DDTHH:mm:ss.sssZ
.
YYYY-MM-DD
соответствует年-月-日
T
принадлежит разделителю.HH:mm:ss.sss
соответствует时:分:秒.毫秒
Z
может быть часовым поясом в формате +-hh:mm
. Один символ Z
UTC+0
строку UTC+0, которую можно записать сокращенно, например: YYYY-MM-DD
, YYYY-MM
, YYYY
.
Дам вам небольшой совет:
let ms = Date.parse('2022-06-23T19:38:30.777+08:00')//Отметка времени let date = new Date(ms)console.log(date)
выполнение кода результат:
JavaScript
использует объект Date
для обработки времени: new Date()
;Date
имеет множество практических методов, и мы можем получить определенный период времени,Date
сделатьDate.now()
может эффективно получать текущее время;