Date
objeto que você pode usar para armazenar informações sobre qualquer ponto no tempo. As datas em JavaScript representam basicamente o número total de milissegundos que se passaram desde a “época Unix” – desde o início de 1º de janeiro de 1970, UTC.
Neste tutorial, aprenderemos como usar os métodos integrados do Date
objeto para obter e definir o dia, mês, ano ou hora em JavaScript.
Como obter a data e hora atuais
Digamos que você queira obter a data e hora atuais no sistema de um usuário. A maneira mais fácil de fazer isso é instanciar um novo Date
objeto usando o Date()
construtor sem passar nenhum parâmetro. Aqui está um exemplo:
1 |
const today = new Date(); |
2 |
|
3 |
// Outputs: Date Fri Jun 02 2023 08:04:45 GMT+0530 (India Standard Time)
|
4 |
console.log(today); |
O código acima nos devolveu um Date
objeto que agora está armazenado dentro da variável today
.
Outra maneira de obter a data e hora atuais envolve simplesmente chamar o Date()
funcionar sem o new
palavra-chave. Isso retornará uma representação de string da data e hora atuais.
1 |
const today = Date(); |
2 |
|
3 |
// Outptus: Fri Jun 02 2023 07:44:26 GMT+0530 (India Standard Time)
|
4 |
console.log(today); |
5 |
|
O resultado final é semelhante a chamar o toString()
método em new Date()
como mostrado abaixo:
1 |
const today = new Date(); |
2 |
|
3 |
// Outputs: Fri Jun 02 2023 08:04:45 GMT+0530 (India Standard Time)
|
4 |
console.log(today.toString()); |
Obter o ano atual
Digamos que você só queira saber o ano atual em JavaScript. Você pode extrair essas informações da string acima. No entanto, é muito mais fácil simplesmente chamar o getFullYear()
método. Este método retornará o ano da chamada Date
objeto de acordo com a hora local.
1 |
const today = new Date(); |
2 |
|
3 |
// Outputs: 2023
|
4 |
console.log(today.getFullYear()); |
Existe outro método chamado getYear()
mas está obsoleto e você não deve usá-lo. O getYear()
O método retorna um número inteiro que representa o ano atual de acordo com a hora local, menos 1900. Esse método está obsoleto e está em processo de remoção.
Obter o mês atual
Você pode usar o getMonth()
método do Date
objeto para obter o mês atual para uma determinada instância de Date. O mês retornado é um número inteiro com um valor baseado em zero.
1 |
const today = new Date(); |
2 |
|
3 |
// Outputs: Date Fri Jun 02 2023 08:53:09 GMT+0530 (India Standard Time)
|
4 |
console.log(today); |
5 |
|
6 |
// Outputs: 5
|
7 |
console.log(today.getMonth()); |
Como você pode ver, recuperamos o número 5 quando o mês atual era junho.
Obter o dia atual
Você pode obter o dia atual da semana para uma instância específica do Date
objeto simplesmente chamando o getDay()
método. Este método retornará um inteiro entre 0 e 6 onde 0 representa domingo, 1 representa segunda-feira e assim por diante.
1 |
const today = new Date(); |
2 |
|
3 |
// Outputs: Date Fri Jun 02 2023 08:53:09 GMT+0530 (India Standard Time)
|
4 |
console.log(today); |
5 |
|
6 |
// Outputs: 5
|
7 |
console.log(today.getDay()); |
Recuperei o valor 5 porque é sexta-feira de acordo com meu horário local.
Obter a data atual
Digamos que você queira obter o dia do mês de um determinado Date
instância. Você pode usar o getDate()
método neste caso. Ele retornará um número entre 1 e 31 representando o dia do mês.
1 |
const today = new Date(); |
2 |
|
3 |
// Outputs: Date Fri Jun 02 2023 08:53:09 GMT+0530 (India Standard Time)
|
4 |
console.log(today); |
5 |
|
6 |
// Outputs: 2
|
7 |
console.log(today.getDate()); |
Obter a hora, minuto ou segundo atual
Existem três métodos chamados getHours()
, getMinutes()
e getSeconds()
que você pode usar para obter as horas, minutos e segundos de uma data específica, respectivamente.
1 |
const today = new Date(); |
2 |
|
3 |
// Outputs: Date Fri Jun 02 2023 09:17:21 GMT+0530 (India Standard Time)
|
4 |
console.log(today); |
5 |
|
6 |
// Outputs: 9
|
7 |
console.log(today.getHours()); |
8 |
|
9 |
// Outouts: 17
|
10 |
console.log(today.getMinutes()); |
11 |
|
12 |
// Outputs: 21
|
13 |
console.log(today.getSeconds()); |
As horas vão de 0 a 23. Os minutos e segundos vão de 0 a 59.
Como definir a data e a hora
Haverá momentos em que você terá que lidar com um momento específico no tempo, em vez do tempo atual. O JavaScript possibilita que você defina sua própria data e hora. Novamente, a maneira mais fácil de fazer isso é com o Date()
construtor.
O Date()
O construtor aceita diferentes tipos de parâmetros, como uma string de data, um objeto de data ou vários valores inteiros. Um único valor inteiro representa o timestamp ou o número de milissegundos desde a meia-noite de 1º de janeiro de 1970.
Quando você passa dois números inteiros para o construtor, eles são considerados o ano e o mês, respectivamente. Você pode passar mais cinco parâmetros opcionais que representam o dia, hora, minuto, segundo e milissegundo. Qualquer argumento que você não especificar receberá automaticamente o valor mínimo possível.
Embora seja possível que diferentes implementações ofereçam suporte a vários formatos de string para especificar uma data e hora, considere seguir o formato padrão abaixo:
1 |
YYYY-MM-DDTHH:mm:ss.sssZ |
Aqui está um exemplo:
1 |
// Not All Platforms Might Support This Format
|
2 |
const party_a = new Date('10 June, 2023 09:30:00'); |
3 |
|
4 |
// Format Supported Across All Platforms
|
5 |
const party_b = new Date('2023-06-10T21:30:00.000'); |
6 |
|
7 |
// Set the Timezone to UTC
|
8 |
const party_c = new Date('2023-06-10T21:30:00.000Z'); |
9 |
|
10 |
// Outputs: Date Sat Jun 10 2023 09:30:00 GMT+0530 (India Standard Time)
|
11 |
console.log(party_a); |
12 |
|
13 |
// Outputs: Date Sat Jun 10 2023 21:30:00 GMT+0530 (India Standard Time)
|
14 |
console.log(party_b); |
15 |
|
16 |
// Outputs: Date Sun Jun 11 2023 03:00:00 GMT+0530 (India Standard Time)
|
17 |
console.log(party_c); |
Não especificamos um fuso horário para nossa segunda sequência de data e hora. Portanto, seu valor foi interpretado como hora local. No entanto, nós usamos Z
em nossa terceira sequência de data e hora, o que implicava que a hora estava em UTC. O valor de retorno em todos os casos ainda está na data e hora locais.
Como definir o ano
Você pode usar o setFullYear()
método e passe o ano que você deseja definir como seu primeiro parâmetro. Este método também aceita mais dois parâmetros opcionais que representarão o valor do mês e da data que você deseja definir, respectivamente. O mês é um número inteiro com valor variando de 0 a 11. A data também é um número inteiro e pode ter qualquer valor de 1 a 31.
aqui estão alguns exemplos:
1 |
const party = new Date('2023-06-10T21:30:00.000'); |
2 |
|
3 |
// Outputs: Date Sat Jun 10 2023 21:30:00 GMT+0530 (India Standard Time)
|
4 |
console.log(party); |
5 |
|
6 |
party.setFullYear(2024); |
7 |
|
8 |
// Outputs: Date Mon Jun 10 2024 21:30:00 GMT+0530 (India Standard Time)
|
9 |
console.log(party); |
10 |
|
11 |
party.setFullYear(2024, 16, 12); |
12 |
|
13 |
// Outputs: Date Mon May 12 2025 21:30:00 GMT+0530 (India Standard Time)
|
14 |
console.log(party); |
Com a primeira chamada para setFullYear()
conseguimos mudar o ano da nossa festa.
A segunda chamada é mais interessante, pois define o mês como 16. No entanto, o ano tem apenas 12 meses. Também é importante observar que os meses são baseados em zero, então dezembro é representado por 11. Os valores voltam para o próximo ano assim que chegamos a dezembro. Agora faltam 5 meses, então o mês final se torna maio.
A data é definida como 12 com base no valor do terceiro parâmetro.
Como definir o mês
Igual a setFullYear()
você pode usar o setMonth()
para definir o mês e o dia do mês de acordo com a hora local.
Os valores excedentes são agrupados exatamente como no exemplo anterior:
1 |
const party = new Date('2023-06-10T21:30:00.000'); |
2 |
|
3 |
// Outputs: Date Sat Jun 10 2023 21:30:00 GMT+0530 (India Standard Time)
|
4 |
console.log(party); |
5 |
|
6 |
party.setMonth(1); |
7 |
|
8 |
// Outputs: Date Fri Feb 10 2023 21:30:00 GMT+0530 (India Standard Time)
|
9 |
console.log(party); |
10 |
|
11 |
party.setMonth(1, 36); |
12 |
|
13 |
// Outputs: Date Wed Mar 08 2023 21:30:00 GMT+0530 (India Standard Time)
|
14 |
console.log(party); |
Com um valor de 1, o mês é definido como fevereiro porque os meses são baseados em zero. No entanto, definir a data como 36 resulta em um estouro. Como havia apenas 28 dias em fevereiro em 2023, os dias restantes são adicionados ao mês de março.
Como definir a data ou o dia do mês
O setDate()
O método é útil para definir o dia do mês para a data de chamada. Este método aceita apenas um único parâmetro que atualizará o dia do mês. Como de costume, qualquer excesso será transferido para o próximo mês.
Aqui está um exemplo:
1 |
const party = new Date('2023-06-10T21:30:00.000'); |
2 |
|
3 |
// Outputs: Date Sat Jun 10 2023 21:30:00 GMT+0530 (India Standard Time)
|
4 |
console.log(party); |
5 |
|
6 |
party.setDate(33); |
7 |
|
8 |
// Outputs: Date Mon Jul 03 2023 21:30:00 GMT+0530 (India Standard Time)
|
9 |
console.log(party); |
Junho tem 30 dias. Portanto, definir o valor de date como 33 resulta em um estouro e a data real se torna 3 de julho.
Como definir a hora, minuto e segundo
Você pode usar métodos como setHours()
, setMinutes()
, setSeconds()
e setMilliseconds()
para definir o valor para horas, minutos, segundos e milissegundos, respectivamente.
Semelhante ao setFullYear()
método, o setHours()
O método também é útil para definir os valores de unidades de tempo menores, como minutos, segundos e milissegundos. aqui estão alguns exemplos:
1 |
const party = new Date('2023-06-10T21:30:00.000'); |
2 |
|
3 |
// Outputs: Date Sat Jun 10 2023 21:30:00 GMT+0530 (India Standard Time)
|
4 |
console.log(party); |
5 |
|
6 |
party.setHours(12); |
7 |
|
8 |
// Outputs: Date Sat Jun 10 2023 12:30:00 GMT+0530 (India Standard Time)
|
9 |
console.log(party); |
10 |
|
11 |
party.setHours(12, 102, 53); |
12 |
|
13 |
// Outputs: Date Sat Jun 10 2023 13:42:53 GMT+0530 (India Standard Time)
|
14 |
console.log(party); |
15 |
|
16 |
party.setMinutes(36, 53); |
17 |
|
18 |
// Outputs: Date Sat Jun 10 2023 13:36:53 GMT+0530 (India Standard Time)
|
19 |
console.log(party); |
20 |
|
21 |
party.setSeconds(153); |
22 |
|
23 |
// Outputs: Date Sat Jun 10 2023 13:38:33 GMT+0530 (India Standard Time)
|
24 |
console.log(party); |
A primeira saída é baseada na data fornecida. No próximo, simplesmente definimos as horas para 12 sem alterar mais nada. Nossa próxima instrução define as horas como 12, mas os minutos como 102. Como há um estouro, as horas se tornam 13 e os minutos se tornam 42.
Depois disso, definimos os minutos para 36 e os segundos para 53. As horas permanecem em 13 devido à nossa declaração anterior. Nossa declaração final define os segundos para nossa Date
objeto. No entanto, há um estouro, de modo que os minutos aumentam em 2 e os segundos se tornam 33.
Pensamentos finais
Neste tutorial, aprendemos o básico para obter e definir diferentes valores do Date
objeto usando métodos internos. Agora você deve conseguir obter o ano, mês, dias, horas, minutos ou segundos de qualquer data em JavaScript. Da mesma forma, você poderá definir esses valores sem se confundir devido a qualquer estouro.