JavaScript Date Handling

Obtendo Nomes de Mês Eficientemente em JavaScript

Spread the love

JavaScript oferece diversas maneiras eficientes de recuperar o nome de um mês a partir de um objeto de data. Este artigo explora três métodos comuns, cada um oferecendo vantagens e desvantagens únicas.

Sumário

Usando a função toLocaleString

O método toLocaleString() oferece uma maneira concisa de formatar datas de acordo com o local do usuário. Isso garante que o nome do mês seja exibido no idioma preferido dele. No entanto, requer um tratamento cuidadoso para isolar o nome do mês.


const date = new Date();
const monthName = date.toLocaleString('default', { month: 'long' }); 

console.log(monthName); // Saída: (e.g., "Outubro", "Novembro", etc.)

// Especificando um local:
const frenchMonthName = date.toLocaleString('fr-FR', { month: 'long' });
console.log(frenchMonthName); // Saída: (e.g., "octobre", "novembre", etc.)

O local 'default' usa as configurações do navegador do usuário. Você pode especificar locais como 'fr-FR' (francês) ou 'es-ES' (espanhol). A opção month: 'long' solicita o nome completo do mês; use month: 'short' para abreviações.

Usando o objeto Intl.DateTimeFormat

O objeto Intl.DateTimeFormat fornece controle mais granular sobre a formatação de datas do que toLocaleString(), permitindo personalizações complexas e melhor tratamento de locais.


const date = new Date();
const options = { month: 'long' };
const formatter = new Intl.DateTimeFormat('default', options); // Ou especifique um local: 'fr-FR'
const monthName = formatter.format(date);

console.log(monthName); // Saída: (e.g., "Outubro", "Novembro", etc.)

// Exemplo com nome de mês curto:
const optionsShort = { month: 'short' };
const formatterShort = new Intl.DateTimeFormat('default', optionsShort);
const shortMonthName = formatterShort.format(date);
console.log(shortMonthName); // Saída: (e.g., "Out", "Nov", etc.)

Embora mais verboso, esta abordagem oferece maior flexibilidade. Criar um objeto DateTimeFormat uma vez e reutilizá-lo melhora a eficiência para várias datas.

Criando uma função personalizada

Embora menos eficiente e sem localização automática, uma função personalizada demonstra o mecanismo subjacente. Esta abordagem geralmente é menos preferida do que os métodos integrados.


const monthNames = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho",
  "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
];

function getMonthName(date) {
  return monthNames[date.getMonth()];
}

const date = new Date();
const monthName = getMonthName(date);
console.log(monthName); // Saída: (e.g., "Outubro", "Novembro", etc.)

Esta função usa um array para mapear os números dos meses (0-11) para seus nomes. Observe que date.getMonth() retorna um índice baseado em zero.

Em resumo, toLocaleString() e Intl.DateTimeFormat são recomendados por sua localização integrada. A função personalizada só deve ser usada quando existirem requisitos específicos e não padrão.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *