Eu criei esse script para calcular a data com 10 dias de antecedência no formato dd / mm / aaaa:
var MyDate = new Date();
var MyDateString = new Date();
MyDate.setDate(MyDate.getDate()+10);
MyDateString = MyDate.getDate() + '/' + (MyDate.getMonth()+1) + '/' + MyDate.getFullYear();
Eu preciso que a data apareça com zeros à esquerda no componente dia e mês por meio da adição dessas regras ao script. Parece que não consigo fazê-lo funcionar.
if (MyDate.getMonth < 10)getMonth = '0' + getMonth;
e
if (MyDate.getDate <10)get.Date = '0' + getDate;
Se alguém pudesse me mostrar onde inseri-los no script, eu ficaria muito agradecido.
javascript
date
date-format
time-format
leading-zero
Julian Coates
fonte
fonte
Respostas:
Tente isso: http://jsfiddle.net/xA5B7/
EDITAR:
Para explicar,
.slice(-2)
nos dá a última dois caracteres da string.Então, não importa o quê, podemos adicionar
"0"
ao dia ou mês e apenas pedir os dois últimos, pois esses são sempre os dois que queremos.Portanto, se os
MyDate.getMonth()
retornos9
, será:adicionando
.slice(-2)
isso nos dá os dois últimos caracteres, que é:Mas se
MyDate.getMonth()
retornar10
, será:adicionando
.slice(-2)
nos fornece os dois últimos caracteres, ou:fonte
MyDate.setDate(MyDate.getDate() + 20);
slice()
técnica na resposta aceita é cerca de 1/10 de segundo mais rápida que a técnica de @Alerosspad()
em 1 milhão de iterações. jsFiddle . "pague seu dinheiro, faça a sua escolha".Aqui está um exemplo dos documentos do objeto Date na Mozilla Developer Network usando uma função "pad" personalizada, sem precisar estender o protótipo de número do Javascript. A função útil que eles fornecem como exemplo é
E abaixo está sendo usado em contexto.
fonte
pad
produzirá apenas strings.A nova maneira moderna de fazer isso é usar
toLocaleDateString
, porque não apenas permite que você formate uma data com a localização adequada, mas também pode passar opções de formato para arquivar o resultado desejado:Quando você pula o primeiro argumento, ele detecta o idioma do navegador. Como alternativa, você pode usar
2-digit
a opção de ano.Se você não precisar oferecer suporte a navegadores antigos como o IE10, esta é a maneira mais limpa de fazer o trabalho. O IE10 e versões inferiores não entenderão o argumento de opções.
Nota: Além disso, também há
toLocaleTimeString
, se você deseja localizar ou formatar a hora de uma data.fonte
Você pode definir uma função "str_pad" (como em php):
fonte
Para vocês do futuro (ECMAScript 2017 e além)
Solução
Explicação
a
String.prototype.padStart(targetLength[, padString])
adiciona o maior número possívelpadString
noString.prototype
alvo para que o novo comprimento do destino étargetLength
.Exemplo
fonte
.padStart(2, '0')
porque o segundo parâmetro é uma string, embora provavelmente não importe, a menos que você esteja usando o TypeScript//em uso:
fonte
Eu encontrei a maneira mais curta de fazer isso:
adicionará zeros à esquerda em todos os dígitos solitários e únicos
fonte
fonte
Você pode usar o operador ternário para formatar a data como uma declaração "se".
Por exemplo:
assim
seria semelhante a uma instrução if, em que se getDate () retornar um valor menor que 10, retornar '0' + a Data ou retornar a data se maior que 10 (já que não precisamos adicionar o líder 0) O mesmo para o mês.
Edit: Esqueceu que getMonth começa com 0, então adicionou o +1 para dar conta dele. Claro que você também pode dizer d.getMonth () <9:, mas achei que usar o +1 ajudaria a facilitar a compreensão.
fonte
Existe outra abordagem para resolver esse problema, usando
slice
JavaScript.a
datestring
data de retorno com o formato esperado: 2019-09-01outra abordagem está usando a
dateformat
biblioteca: https://github.com/felixge/node-dateformatfonte
Facilite sua vida e use Moment.js alguns exemplos de código:
fonte
fonte
Você pode fornecer opções como um parâmetro para formatar a data. O primeiro parâmetro é para o código do idioma que você pode não precisar e o segundo é para as opções. Para mais informações, visite https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString
fonte
Embrulhei a resposta correta dessa pergunta em uma função que pode adicionar vários zeros à esquerda, mas o padrão é adicionar 1 zero.
para trabalhar apenas com números e com não mais de 2 dígitos, esta também é uma abordagem:
fonte
Outra opção, usando uma função interna para fazer o preenchimento (mas resultando em um código bastante longo!):
E outro, manipulando strings com expressões regulares:
Mas esteja ciente de que um mostrará o ano no início e o dia no final .
fonte
Adicionando à resposta @modiX, é isso que funciona ... NÃO DEIXE QUE ESTEJA vazio
fonte
Aqui está um exemplo muito simples de como você pode lidar com essa situação.
fonte
O objetivo a seguir é extrair a configuração, conectar-se
Date.protoype
e aplicar a configuração.Eu usei um
Array
para armazenar pedaços de tempo e quando eupush()
this
como umDate
objeto, ele me devolve o comprimento para iterar. Quando terminar, posso usarjoin
oreturn
valor.Isso parece funcionar muito rápido: 0.016ms
demo: http://jsfiddle.net/tive/U4MZ3/
fonte
O que eu faria é criar meu próprio auxiliar de data personalizado, com a seguinte aparência:
(veja também este violino )
fonte
Adicione um pouco de preenchimento para permitir um zero inicial - quando necessário - e concatenar usando o delimitador de sua escolha como sequência.
fonte
Como sugere @John Henckel, começar a usar o método toISOString () facilita as coisas
fonte
fonte
tente isso para uma função básica, sem necessidade de bibliotecas
fonte
fonte
Você pode usar String.slice () que extrai uma seção de uma string e a retorna como uma nova string, sem modificar a string original:
Ou você também pode usar uma biblioteca como Moment.js para formatar a data:
fonte