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.