Manipulação de Datas com o Objeto Date do JavaScript

CSSBeginner
Pratique Agora

Introdução

Neste laboratório, os participantes explorarão o poderoso objeto JavaScript Date e aprenderão técnicas essenciais para manipular datas e horas. Através de uma abordagem abrangente e prática, os alunos descobrirão como criar objetos Date usando vários métodos de inicialização, recuperar componentes específicos de data, formatar e exibir informações de data, modificar datas usando métodos setter e realizar cálculos complexos de data.

O laboratório fornece orientação prática, passo a passo, sobre como trabalhar com datas em JavaScript, cobrindo habilidades fundamentais, como criar objetos Date a partir da hora atual, timestamps específicos, strings de data e milissegundos desde a Época Unix (Unix Epoch). Ao final deste laboratório, os participantes terão adquirido uma sólida compreensão das técnicas de manipulação de datas, permitindo que lidem efetivamente com tarefas relacionadas a datas em suas aplicações JavaScript.

Criar um Novo Objeto Date

Nesta etapa, você aprenderá como criar novos objetos Date em JavaScript, o que é fundamental para trabalhar com datas e horas. O objeto Date do JavaScript permite que você trabalhe com datas e horas facilmente.

Primeiro, vamos abrir o WebIDE e criar um novo arquivo JavaScript chamado dates.js no diretório ~/project.

Crie um novo objeto Date com diferentes métodos de inicialização:

// Create a Date object representing the current date and time
let currentDate = new Date();
console.log("Current Date:", currentDate);

// Create a Date object with specific date and time
let specificDate = new Date(2023, 5, 15, 10, 30, 0);
console.log("Specific Date:", specificDate);

// Create a Date object from a date string
let stringDate = new Date("2023-06-15");
console.log("Date from String:", stringDate);

// Create a Date object using milliseconds since Unix Epoch
let millisecondDate = new Date(1686816000000);
console.log("Date from Milliseconds:", millisecondDate);

Exemplo de saída:

Current Date: Thu Jun 15 2023 12:00:00 GMT+0000 (Coordinated Universal Time)
Specific Date: Thu Jun 15 2023 10:30:00 GMT+0000 (Coordinated Universal Time)
Date from String: Thu Jun 15 2023 00:00:00 GMT+0000 (Coordinated Universal Time)
Date from Milliseconds: Thu Jun 15 2023 00:00:00 GMT+0000 (Coordinated Universal Time)

Pontos-chave para lembrar:

  • new Date() cria um objeto Date com a data e hora atuais
  • new Date(year, month, day, hours, minutes, seconds) permite criar uma data específica
  • Os meses são indexados a partir de zero (0-11), então junho é representado por 5
  • Você pode criar datas a partir de strings ou milissegundos desde a Época Unix (1º de janeiro de 1970)

Recuperar Componentes da Data Atual

Nesta etapa, você aprenderá como extrair componentes específicos de um objeto Date. Com base na etapa anterior, usaremos o arquivo dates.js para demonstrar vários métodos para recuperar componentes de data e hora.

Abra o arquivo ~/project/dates.js e adicione o seguinte código:

// Create a current date object
let currentDate = new Date();

// Retrieve individual date components
let year = currentDate.getFullYear();
let month = currentDate.getMonth(); // 0-11 (0 = January)
let day = currentDate.getDate(); // Day of the month
let hours = currentDate.getHours();
let minutes = currentDate.getMinutes();
let seconds = currentDate.getSeconds();
let milliseconds = currentDate.getMilliseconds();

// Display individual components
console.log("Year:", year);
console.log("Month:", month + 1); // Add 1 to show actual month number
console.log("Day of Month:", day);
console.log("Hours:", hours);
console.log("Minutes:", minutes);
console.log("Seconds:", seconds);
console.log("Milliseconds:", milliseconds);

// Get day of the week
let dayOfWeek = currentDate.getDay(); // 0-6 (0 = Sunday)
console.log("Day of Week:", dayOfWeek);

// Get timestamp (milliseconds since Unix Epoch)
let timestamp = currentDate.getTime();
console.log("Timestamp:", timestamp);

Exemplo de saída:

Year: 2023
Month: 6
Day of Month: 15
Hours: 12
Minutes: 30
Seconds: 45
Milliseconds: 123
Day of Week: 4
Timestamp: 1686816045123

Pontos-chave para lembrar:

  • getFullYear() retorna o ano de quatro dígitos
  • getMonth() retorna 0-11, então adicione 1 para o número real do mês
  • getDate() retorna o dia do mês (1-31)
  • getDay() retorna o dia da semana (0-6)
  • getTime() retorna milissegundos desde 1º de janeiro de 1970

Formatar e Exibir Informações de Data

Nesta etapa, você aprenderá vários métodos para formatar e exibir informações de data em JavaScript. Abra o arquivo ~/project/dates.js e adicione o seguinte código para explorar diferentes técnicas de formatação:

// Create a current date object
let currentDate = new Date();

// Method 1: Using toLocaleDateString()
let localeDateString = currentDate.toLocaleDateString();
console.log("Local Date String:", localeDateString);

// Method 2: Using toDateString()
let dateString = currentDate.toDateString();
console.log("Date String:", dateString);

// Method 3: Using toLocaleString()
let localeString = currentDate.toLocaleString();
console.log("Locale String:", localeString);

// Method 4: Custom formatting
let customFormat =
  `${currentDate.getFullYear()}-` +
  `${(currentDate.getMonth() + 1).toString().padStart(2, "0")}-` +
  `${currentDate.getDate().toString().padStart(2, "0")}`;
console.log("Custom Format:", customFormat);

// Method 5: Internationalization API
let options = {
  weekday: "long",
  year: "numeric",
  month: "long",
  day: "numeric"
};
let intlFormat = currentDate.toLocaleDateString("en-US", options);
console.log("Internationalized Format:", intlFormat);

Exemplo de saída:

Local Date String: 6/15/2023
Date String: Thu Jun 15 2023
Locale String: 6/15/2023, 12:30:45 PM
Custom Format: 2023-06-15
Internationalized Format: Thursday, June 15, 2023

Pontos-chave para lembrar:

  • toLocaleDateString() fornece uma representação de data localizada
  • toDateString() fornece uma string de data legível por humanos
  • toLocaleString() inclui data e hora
  • A formatação personalizada permite o controle preciso sobre a exibição da data
  • A API de internacionalização oferece opções avançadas de localização

Modificar a Data Usando Métodos Setter

Nesta etapa, você aprenderá como modificar componentes de data usando os métodos setter de Date do JavaScript. Abra o arquivo ~/project/dates.js e adicione o seguinte código para explorar diferentes maneiras de alterar os valores da data:

// Create a new Date object
let modifiableDate = new Date();
console.log("Original Date:", modifiableDate);

// Set specific year
modifiableDate.setFullYear(2024);
console.log("After setting year:", modifiableDate);

// Set month (0-11, so 5 represents June)
modifiableDate.setMonth(5);
console.log("After setting month:", modifiableDate);

// Set day of the month
modifiableDate.setDate(15);
console.log("After setting day:", modifiableDate);

// Set hours (0-23)
modifiableDate.setHours(14);
console.log("After setting hours:", modifiableDate);

// Set minutes (0-59)
modifiableDate.setMinutes(30);
console.log("After setting minutes:", modifiableDate);

// Set seconds (0-59)
modifiableDate.setSeconds(45);
console.log("After setting seconds:", modifiableDate);

// Chaining setter methods
let customDate = new Date();
customDate.setFullYear(2025).setMonth(11).setDate(31);
console.log("Custom Date:", customDate);

Exemplo de saída:

Original Date: Thu Jun 15 2023 12:30:45 GMT+0000
After setting year: Thu Jun 15 2024 12:30:45 GMT+0000
After setting month: Thu Jun 15 2024 12:30:45 GMT+0000
After setting day: Sat Jun 15 2024 12:30:45 GMT+0000
After setting hours: Sat Jun 15 2024 14:30:45 GMT+0000
After setting minutes: Sat Jun 15 2024 14:30:45 GMT+0000
After setting seconds: Sat Jun 15 2024 14:30:45 GMT+0000
Custom Date: Wed Dec 31 2025 00:00:00 GMT+0000

Pontos-chave para lembrar:

  • Os métodos setter permitem a modificação precisa dos componentes da data
  • Os meses são indexados a partir de zero (0-11)
  • As horas usam o formato de 24 horas (0-23)
  • Os métodos setter modificam o objeto Date original
  • Você pode encadear alguns métodos setter para conveniência

Realizar Cálculos de Data

Nesta etapa, você aprenderá como realizar vários cálculos de data usando os métodos Date do JavaScript. Abra o arquivo ~/project/dates.js e adicione o seguinte código para explorar diferentes técnicas de manipulação de data:

// Create date objects for calculations
let currentDate = new Date();
let futureDate = new Date(currentDate.getTime());

// Add days to a date
futureDate.setDate(currentDate.getDate() + 30);
console.log("Current Date:", currentDate);
console.log("30 Days from Now:", futureDate);

// Calculate difference between dates
let differenceInMilliseconds = futureDate.getTime() - currentDate.getTime();
let differenceInDays = Math.floor(
  differenceInMilliseconds / (1000 * 60 * 60 * 24)
);
console.log("Days Between Dates:", differenceInDays);

// Calculate age or time elapsed
let birthDate = new Date("1990-01-01");
let ageInMilliseconds = currentDate.getTime() - birthDate.getTime();
let ageInYears = Math.floor(ageInMilliseconds / (1000 * 60 * 60 * 24 * 365.25));
console.log("Calculated Age:", ageInYears);

// Find the last day of the current month
let lastDayOfMonth = new Date(
  currentDate.getFullYear(),
  currentDate.getMonth() + 1,
  0
);
console.log("Last Day of Current Month:", lastDayOfMonth);

// Check if a year is a leap year
function isLeapYear(year) {
  return new Date(year, 1, 29).getMonth() === 1;
}
console.log("Is 2024 a Leap Year?", isLeapYear(2024));

Exemplo de saída:

Current Date: Thu Jun 15 2023 12:30:45 GMT+0000
30 Days from Now: Sat Jul 15 2023 12:30:45 GMT+0000
Days Between Dates: 30
Calculated Age: 33
Last Day of Current Month: Wed Jun 30 2023 00:00:00 GMT+0000
Is 2024 a Leap Year? true

Pontos-chave para lembrar:

  • Use getTime() para obter milissegundos para cálculos
  • Converta milissegundos em dias dividindo apropriadamente
  • Você pode adicionar ou subtrair dias usando setDate()
  • Calcule a idade ou as diferenças de tempo entre as datas
  • Verifique anos bissextos testando 29 de fevereiro

Resumo

Neste laboratório, os participantes aprenderam a manipular datas usando o objeto Date do JavaScript por meio de uma exploração abrangente das técnicas de criação, recuperação e manipulação de datas. O laboratório abordou múltiplas abordagens para inicializar objetos Date, incluindo a criação de datas que representam o momento atual, a especificação de datas exatas com parâmetros, a análise de datas a partir de strings e a geração de datas a partir de timestamps em milissegundos.

Os exercícios práticos demonstraram habilidades-chave de manipulação de datas em JavaScript, como extrair componentes específicos da data, formatar informações de data, aplicar métodos setter para modificar datas e realizar cálculos de data. Os participantes ganharam experiência prática com representações de meses indexadas a partir de zero, compreendendo diferentes estratégias de inicialização de objetos Date e aproveitando os métodos JavaScript embutidos para trabalhar efetivamente com dados temporais em vários cenários de programação.