Data e hora são cursos obrigatórios que não podem ser ignorados no processo de programação. Felizmente JavaScript
preparou um objeto integrado Data (data) para nós. Através deste objeto podemos criar, armazenar, modificar, medir tempo, imprimir e outras operações básicas. É um dos cursos obrigatórios para todo programador JavaScript
.
é igual à de objetos comuns. Podemos usar new Date()
para criar um objeto Date
e também podemos passar alguns parâmetros de inicialização durante a criação.
sem parâmetros:
let now = new Date()console.log(now)
Os resultados da execução do código são os seguintes:
Isso simplesmente exibe o horário específico em que o código é executado. O que é mostrado aqui é 2022年6月22日19点25份24秒
.
cria um objeto de data com parâmetros de milissegundos, onde milliseconds
se refere ao número de milissegundos desde UTC+0 em 1º de janeiro de 1970 (1 milissegundo = 1/1000 segundos).
//Crie um horário, por exemplo 1970.1.1 ponto no tempo 0 milissegundos, seja jan01_1970 = new Date(0) console.log(jan01_1970) //Crie um horário 3 dias depois do ponto 1.1 em 1970 (3 dias * 24 horas * 3.600 segundos * 1.000 milissegundos) deixe jan04_1970 = nova data (3 * 24 * 3600 * 1000)
Resultados da execução do código
Console.log(jan04_1970):
milliseconds
é o número de milissegundos que se passaram desde 00:00:00 de 1º de janeiro de 1970 ou é chamado de carimbo de data/hora .
Timestamp é uma representação digital simples de data. Geralmente usamos new Date(milliseconds)
para criar uma data. Se já temos um objeto Date
, podemos usar date.getTime()
para obter o carimbo de data/hora correspondente à data.
Observação:
a China está na Zona 8, então o horário no exemplo acima não é 00:00:00, mas 08:00:00,
O carimbo de data/hora não é apenas um número inteiro, também pode ser um número negativo, por exemplo:
//1969-12-31 00:00:00let dec31_1969 = new Date(-24 * 3600 * 1000)console.log(dec31_1969)
code resultado da execução:
Seusar um carimbo de data/hora toda vez que for criado, pode não ser conveniente, porque o cálculo do carimbo de data/hora ainda é um pouco difícil.
Também podemos usar uma string de tempo para criar um horário, por exemplo:
let date = new Date('2022-06-22 00:00:00') console.log(date)
resultados da execução do código:
year
—— deve ser um número de quatro dígitosmonth
[0,11]
, 0
significa1
;hours/minutes/sec/ms
- o padrão é 0,por exemplo:
let date = new Date(2022,6,22,20,35,33)console.log(date)
resultados de execução de código:
Também podemos especificar o número de milissegundos:
let date = new Date(2022,6,22,20,35,33,777)console.log(date)
Se tivermos um objeto Date
, podemos passar o objeto construído -no método do objeto Date
, obtém uma parte do tempo, como ano, mês, data, etc.
Por exemplo, temos date
:
let date = new Date(2022,5,22,20,35,33)
getFullYear()
obtém o ano, date.getFullYear()
retorna 2022
getMonth()
mês, date.getMonth()
retorna 5
, que é 6
;getDay()
date.getDay()
getDate()
do mês atual, date.getDate()
retorna 22
;date.getDay()
retorna 3
;Nota:
As datas acima são todas baseadas em datas locais.
getYear
getFullYear
- , estou no fuso horário da China.
Também podemos obter a hora no fuso horário 0
, que é a hora UTC
, correspondente a getUTCFullYear()
e getUTCMonth()
, getUTCDay
, etc. Basta inserir UTC
depois de get
.
Por exemplo:
let date = new Date(2022,5,22,20,35,33)console.log(date.getHours(),date.getUTCHours())
resultados de execução de código:
Também pode ser visto à noite que a diferença entre o fuso horário da China e o fuso horário 0
é de 8
horas.
getTime()
retorna o carimbo de data/hora da data, e o método não possui modo UTC
;getTimezoneOffset()
retorna a diferença horária entre o fuso horário local e o fuso horário 0
, em minutos, e não há modo UTC
também podemos definir a data através do método Date
Uma certa parte de:
setFullYear(year, [month], [date])
define o ano (mês, dia)setMonth(month, [date])
define o mês (dia)setDate(date)
define a data (o dia do mês)setHours(hour, [min], [sec], [ms])
Define horas (minutos, segundos, milissegundos)setMinutes(min, [sec], [ms])
Definir minutos (segundos, milissegundos)setSeconds(sec, [ms])
Definir segundos (milissegundos)setMilliseconds(ms)
Definir milissegundossetTime(milliseconds)
(use o número de milissegundos desde 1970-01-01 00:00:00 UTC+0
para definir a data inteira)Entre as funções acima, apenas setTime()
não possui variante UTC
.
Date
do JavaScript
possui uma função de calibração automática, o que nos proporciona grande comodidade no cálculo do tempo.
Por exemplo:
let date = new Date(2022,5,38)//Observe os resultados de execução do código 38console.log(date) aqui
:
Pelos resultados da execução, podemos perceber que “38 de junho de 2022” não causou erro no programa, mas converteu a data para “8 de julho de 2022”.
O caso acima verificou que em JavaScript
, datas fora do intervalo serão atribuídas automaticamente pelo objeto Date
. Desta forma, podemos usar Date
para calcular datas de forma muito conveniente.
Por exemplo, podemos adicionar e subtrair o ano, mês e dia na data:
let date = new Date(2022,5,23)//A hora atual é 2022-6-23date.setDate(date.getDate() + 8) //Calcule o tempo após oito dias console.log(data)
resultados da execução do código:
Da mesma forma, também podemos usar o método date.setSeconds()
para calcular a data em segundos.
e Date
de data é o mesmo que o valor de retorno de date.getTime()
, que é um valor em milissegundos:
let date = new Date()console.log(+date)
code Resultado da execução:
Como a essência do tempo é um número, também podemos realizar cálculos de diferença de tempo em ms
(milissegundos).
Por exemplo:
let date1 = new Date(2022,5,23)let date2 = new Date(2022,5,24)console.log(`A diferença de horário é ${date2-date1}ms`)
O resultado da execução do código é :
Se quisermos obter a hora atual, uma abordagem melhor é usar o método Date.now()
. Este método retornará o carimbo de data/hora da hora atual sem criar objetos Date
adicionais, o que é bom para sobrecarga de memória e coleta de lixo, e o código é mais simples.
Por exemplo:
deixe começar = Date.now()for(let i = 1;i<100000;i++){ let num = i * i * i;}let end = Date.now()console.log(`consume time ${end - Begin}ms`)
resultados da execução do código:
O método Date.parse()
pode ler uma string de data e convertê-la em um carimbo de data/hora, mas a string deve obedecer a certas regras: YYYY-MM-DDTHH:mm:ss.sssZ
.
YYYY-MM-DD
corresponde a年-月-日
T
pertence ao delimitadorHH:mm:ss.sss
corresponde a时:分:秒.毫秒
Z
pode ser um fuso horário no formato +-hh:mm
. Um único caractere Z
representa uma string UTC+0
que pode ser escrita de forma abreviada, por exemplo: YYYY-MM-DD
, YYYY-MM
, YYYY
.
Para lhe dar uma dica:
let ms = Date.parse('2022-06-23T19:38:30.777+08:00')//Time stamp let date = new Date(ms)console.log(date)
execução do código resultado:
JavaScript
usa Date
para processar o tempo: new Date()
;Date
tem muitos métodos práticos e podemos obter um determinado período de tempo queDate
será calibrado automaticamenteDate.now()
pode obter com eficiência a hora atual;