Como posso gerar o nome do mês (por exemplo: outubro / outubro) a partir deste objeto de data em JavaScript?
var objDate = new Date("10/11/2009");
Como posso gerar o nome do mês (por exemplo: outubro / outubro) a partir deste objeto de data em JavaScript?
var objDate = new Date("10/11/2009");
Respostas:
Versão mais curta:
Nota (08/03/2019) - Esta resposta minha que escrevi originalmente em 2009 está desatualizada. Veja a resposta de David Storey para uma solução melhor.
fonte
new Date()
retornado, oTue Sep 06 2011 20:02:25 GMT+0200 (CEST)
que claramente significa que o objeto Date já tenha tudo isso definido internamente (nomes de dias e dias da semana), ele não seja público, portanto, precisamos digitá-lo novamente. :(String#split
comtoString
outoDateString
.Agora é possível fazer isso com a API de internacionalização do ECMAScript:
'long'
usa o nome completo do mês,'short'
para o nome abreviado, e'narrow'
para uma versão mais mínima, como a primeira letra nos idiomas alfabéticos.Você pode alterar o código do idioma do navegador
'default'
para o que desejar (por exemplo'en-us'
), e ele usará o nome correto para esse idioma / país.Com a
toLocaleString
API, é necessário passar o código do idioma e as opções a cada vez. Se você usar as mesmas informações de localidade e opções de formatação em várias datas diferentes, poderá usarIntl.DateTimeFormat
:Para obter mais informações, consulte minha postagem no blog sobre a API de internacionalização .
fonte
Aqui está outro, com suporte para localização :)
você pode adicionar facilmente suporte para outros idiomas:
fonte
Date.locale
estáundefined
. é uma excelente resposta para outras implementações de JS!Se você não se importa de estender o protótipo Date (e há alguns bons motivos para não querer fazer isso), na verdade, você pode criar um método muito fácil:
Essas funções serão aplicadas a todos os objetos Date do javascript.
fonte
Eu recomendo vivamente a
format
função da biblioteca moment.js , que você pode usar assim:Use "MMMM" em vez de "MMM" se precisar do nome completo do mês
Além de uma extensa lista de outros recursos, possui forte suporte à internacionalização .
fonte
Luxon
edate-fns
, no entanto, novamente, há amplo suporte de navegador para a API de internacionalização atualmente .Pode ser usado como
fonte
Algum processo fácil e comum a partir do objeto de data pode ser feito com isso.
Ou você pode criar um protótipo de data como
Ex:
var dateFormat3 = new Date().getMonthName();
# March
var dateFormat4 = new Date().getFormatDate();
# 16 March, 2017
fonte
Você pode usar o datejs para fazer isso. Verifique os FormatSpecifiers , MMMM fornece o nome do mês:
E o datejs localizou isso para mais de 150 localidades! Veja aqui
fonte
Tentar:
fonte
Aqui está uma maneira que não depende de uma matriz codificada e suporta vários códigos de idioma.
Se você precisar de uma matriz inteira:
Uso:
Se você precisar apenas de um mês selecionado (mais rápido):
Uso:
Testado e funciona bem no Chrome e IE 11. No mozilla, são necessárias algumas modificações, pois retorna a data inteira.
fonte
toLocaleString
Infelizmente, a melhor maneira de extrair o nome do mês é da representação UTCString:
fonte
Em vez de declarar a matriz que contém todo o nome do mês e apontar com um índice, também podemos escrevê-lo em uma versão mais curta, como abaixo:
fonte
MAY 1, 2015 AT 12:00:00 AM GMT-4
(quando se utiliza{ month: "long" }
parâmetros)new Date().toLocaleString(navigator.language, { month: "short" })
fonte
O formato natural hoje em dia é usar o Moment.js.
A maneira de obter o mês em um formato de sequência é muito simples no Moment.js, não é necessário codificar os nomes dos meses no seu código: Para obter o mês e o ano atuais no formato do nome do mês e o ano inteiro (maio de 2015):
fonte
Luxon
edate-fns
, no entanto, novamente, há amplo suporte de navegador para a API de internacionalização atualmente .Outra maneira de formatar a data
fonte
Você pode usar um dos vários formatadores de data disponíveis. Como isso se enquadra na especificação JavaScript, estará disponível nos modos navegador e servidor.
por exemplo
Há mais em https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
fonte
Se você não quiser usar uma biblioteca externa ou armazenar uma matriz de nomes de meses, ou se a API de Internacionalização do ECMAScript não for boa o suficiente devido à compatibilidade do navegador, você sempre poderá fazê-lo da maneira antiga, extraindo as informações do diretório data de saída:
Isso forneceria o nome abreviado do mês, por exemplo, outubro. Acredito que a data chegará em todos os tipos de formatos, dependendo da inicialização e do seu código do idioma. Portanto, dê uma olhada no
toDateString()
retorno e recalcule seussubstring()
valores com base nisso.fonte
Se você estiver usando jQuery, provavelmente também usará a interface do usuário do jQuery, o que significa que você pode usar $ .datepicker.formatDate () .
fonte
Minha melhor solução é a seguinte:
fonte
Com o momentjs , basta usar a notação de formato .
fonte
moment
existe uma biblioteca muito grande e um exagero para isso. As alternativas modernas incluemLuxon
edate-fns
, no entanto, novamente, há amplo suporte de navegador para a API de internacionalização atualmente .Isso também pode ser feito se você estiver usando o kendo.
Aqui está uma lista de formatadores do site kendo :
fonte
Se você não deseja usar o momento e deseja exibir o nome do mês -
fonte
Para mim, esta é a melhor solução,
para TypeScript também
Saída é
fonte
Você pode simplesmente usar o Date.toLocaleDateString () e analisar a data desejada como parâmetro
Você pode encontrar mais informações na documentação do Firefox
fonte
Armazene os nomes em uma matriz e procure pelo índice do mês.
Método JavaScript getMonth ()
fonte
var month = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
? Muito mais curto do que adicioná-los individualmente ...Eu tenho uma solução parcial que eu criei. Ele usa uma expressão regular para extrair o nome do mês e dia. Mas, ao examinar as opções de região e idioma (Windows), percebo que culturas diferentes têm ordem de formato diferente ... talvez um padrão de expressão regular melhor possa ser útil.
fonte
Apenas estendendo as muitas outras excelentes respostas - se você estiver usando jQuery - você poderia fazer algo como
onde
date
é igual aovar d = new Date(somevalue)
. A principal vantagem disso é por @nickf dito sobre como evitar o espaço para nome global.fonte
Para obter uma matriz do nome do mês:
http://jsfiddle.net/polinux/qb346/
fonte
Basta escrever um invólucro simples
toLocaleString
:fonte
Um hack rápido que usei, que funciona bem:
fonte