Manipulando datas em JavaScript sem o objeto de data
-
20-09-2019 - |
Pergunta
Parece que não posso usar o objeto JavaScript Data, pois ele é indicador de inércia para as datas dos EUA quando você inicializar com um datestring. Não há como passar qualquer informação cultural para o objeto de data
Ou seja, não importa quais sejam as configurações de localidade dos clientes
var d = new Date ("08/10/2009") sempre criará um objeto de data que representa o dia 10 de agosto de 2009, em vez do dia 8 de outubro de 2009, se a localidade dos clientes era o Reino Unido.
Portanto, dado que meu requisito é poder adicionar/subtrair dias/meses/anos facilmente, existe uma maneira inteligente de fazer isso facilmente sem o objeto de data
Tudo o que preciso fazer é adicionar um dia a uma data (ou uma representação de string de uma data). Portanto, se meu código detectar as liquidação de localidade estão nos EUA, quando vê uma corda como "10/08/2009", ele bate em "10/09/2009", mas se tivesse detectado, estava no Reino Unido, seria Conheci uma representação de string do Reino Unido de uma data e a atingiu para "09/10/2009"
Solução
Para manipulação e localização de data em JavaScript, eu sempre recomendo o Datejs biblioteca.
Esta biblioteca abstrai o uso de objetos de data, possui opções de localização muito boas, análise e formatação poderosas de data e também possui uma API fluente muito agradável.
Outras dicas
Se você conhecer Você está obtendo DD/mm formatado por entrada, você pode facilmente montar a data correta.
function britDay(D){
D= D.match(/\d+/g);
return new Date(+D[2], D[1]-1, +D[0]);
}
O tolocaledatestring retornará a data no formato esperado pelo usuário.
Contar com a entrada do usuário que obedece a regras de formatação específicas é otimista- e é por isso que a maioria dos sites usa entradas separadas e rotuladas ou campos selecionados para o mês, data e ano.
Você provavelmente sabe que é fácil adicionar um dia a uma data, basta adicionar 86.400 * 1000 milissegundos à data. Parece que exibir em seu local é o problema; Date.tolocalestring () não faz a coisa certa para você?
dojo.date.locale.parse poderá analisar uma corda formatada de acordo com o local de sua escolha. Possui uma tabela de dados culturais baseados em unicode.org/cldr. Ver Este artigo Para maiores informações.