Estou tentando usar JS para transformar um date object
em uma seqüência de caracteres no YYYYMMDD
formato. Existe uma maneira mais fácil do que a concatenação Date.getYear()
, Date.getMonth()
e Date.getDay()
?
javascript
date
IVR Avenger
fonte
fonte
Respostas:
Trecho de código alterado que costumo usar:
fonte
[1]
por.length===2
, porque um indexador em uma string não é totalmente suportado. Veja esta resposta por razões.[this.getFullYear(), mm<10 ? '0'+ mm: mm, dd<10 ? '0'+ dd : dd].join('.')
var mm = (this.getMonth() + 101).toString().substring(1, 3)
Não gostei de adicionar ao protótipo. Uma alternativa seria:
fonte
rightNow
variável ao redor, você pode quebrarnew Date
e começar tudo de volta em uma única linha:(new Date()).toISOString().slice(0,10).replace(/-/g,"")
YYYYMMDDHHmmSSsss
, então eu fiz isso:var ds = (new Date()).toISOString().replace(/[^0-9]/g, "");
. Muito simples, mas deve ser encapsulado.rightNow.setMinutes(rightNow.getMinutes() - rightNow.getTimezoneOffset()); rightNow.toISOString().slice(0,10)
Você pode usar a
toISOString
função:Ele fornecerá um formato "aaaa-mm-dd".
fonte
Moment.js poderia ser seu amigo
fonte
var formattedDate = moment().format('YYYYMMDD');
Se você não precisar de uma solução JS pura, poderá usar a jQuery UI para fazer o trabalho da seguinte maneira:
Normalmente não gosto de importar muitas bibliotecas. Mas a interface do usuário do jQuery é tão útil que você provavelmente a usará em outro lugar do seu projeto.
Visite http://api.jqueryui.com/datepicker/ para mais exemplos
fonte
Essa é uma única linha de código que você pode usar para criar uma
YYYY-MM-DD
sequência da data de hoje.fonte
toISOString()
dará 2015-12-31T22: 00: 00 GMT +0 (duas horas antes).fonte
new Date('Sun Mar 31 2019 00:00:00.000').toLocaleString('en-us', {year: 'numeric', month: '2-digit', day: '2-digit'}).replace(/(\d+)\/(\d+)\/(\d+)/, '$3-$1-$2');
Além da resposta de oo, eu gostaria de recomendar a separação das operações lógicas do retorno e, em vez disso, colocá-las como ternárias nas variáveis.
Além disso, use
concat()
para garantir concatenação segura de variáveisfonte
("00" + (this.getDate())).slice(-2)
para obter os números com dois dígitos. Não existe uma instrução "if" ou "?:" E menos chamadas para a função .getX (). Se não um pouco mais rápido, é pelo menos mais legível.Não gosto de modificar objetos nativos e acho que a multiplicação é mais clara do que a string que preenche a solução aceita.
Fiddle: http://jsfiddle.net/gbdarren/Ew7Y4/
fonte
.replace('-', '')
para responder à pergunta do OP), enquanto você era fiel à pergunta original do OP e não exigia essa etapa extra. Excelente!Solução JS simples (ES5) sem problemas de salto de data possíveis causados pela impressão de Date.toISOString () no UTC:
Isso em resposta ao comentário de @ weberste na resposta de @Pierre Guilbert.
fonte
toISOString
retornar vários hífens sucessivos?fonte
fonte
new Date()
cria um novo objeto de data que é apenas um invólucro em torno de nr. de ms desde 01/01/1970 00: 00: 00.000 UTC. Em seguida,toISOString
imprime no fuso horário local.Outra maneira é usar
toLocaleDateString
com um código de idioma que possui um padrão de formato de data big-endian , como Suécia, Lituânia, Hungria, Coréia do Sul, ...:Para remover os delimitadores (
-
), basta substituir os que não são dígitos:Isso não possui o erro potencial que você pode obter com os formatos de data UTC: a data UTC pode ter um dia de folga em comparação com a data no fuso horário local.
fonte
Você pode simplesmente usar este código de uma linha para obter a data no ano
fonte
Versão pouco simplificada para a resposta mais popular neste tópico https://stackoverflow.com/a/3067896/5437379 :
fonte
dateformat é um pacote muito usado.
Como usar:
Baixe e instale
dateformat
no NPM. Exija no seu módulo:const dateFormat = require('dateformat');
e apenas formate suas coisas:
const myYYYYmmddDate = dateformat(new Date(), 'yyyy-mm-dd');
fonte
Esse cara aqui => http://blog.stevenlevithan.com/archives/date-time-format escreveu uma
format()
função para oDate
objeto Javascript , para que possa ser usado com formatos literais familiares.Se você precisar de formatação de data com todos os recursos no Javascript do seu aplicativo, use-o. Caso contrário, se o que você quer fazer é único, concatenar getYear (), getMonth (), getDay () é provavelmente mais fácil.
fonte
Trabalhando com a resposta do @ oo, você retornará a sequência da data de acordo com uma sequência de formato. Você pode adicionar facilmente uma regex do ano de 2 dígitos para o ano e milissegundos e outros, se precisar deles.
No entanto, não sei quão eficiente isso é, especialmente em termos de desempenho, porque usa muita regex. Provavelmente poderia usar algum trabalho que não domino js puros.
fonte
Este código está corrigido na resposta de Pierre Guilbert:
(funciona mesmo depois de 10000 anos)
fonte
Parece que o mootools fornece
Date().format()
: https://mootools.net/more/docs/1.6.0/Types/DateNão tenho certeza se vale a pena incluir apenas para esta tarefa específica.
fonte
Normalmente, uso o código abaixo quando preciso fazer isso.
Para explicar, .slice (-2) nos fornece os dois últimos caracteres da string.
Então, não importa o que aconteça, 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 MyDate.getMonth () retornar 9, será:
adicionando .slice (-2) nos dados dos dois últimos caracteres, que é:
Mas se date.getMonth () retornar 10, será:
adicionando .slice (-2), obtemos os dois últimos caracteres, ou:
fonte
Se você usar AngularJs (até 1,5), poderá usar o filtro de data :
fonte
Respondendo a outro por simplicidade e legibilidade.
Além disso, a edição de membros da classe predefinidos existentes com novos métodos não é incentivada:
fonte
E o Day.js ?
É apenas 2 KB, e você também pode
dayjs().format('YYYY-MM-DD')
.https://github.com/iamkun/dayjs
fonte
Se você não se importa de incluir uma biblioteca adicional (mas pequena), o Sugar.js fornece muitas funcionalidades interessantes para trabalhar com datas em JavaScript. Para formatar uma data, use a função de formatação :
fonte
fonte
date-shortcode para o resgate!
fonte
Use o padStart :
fonte
Aqui está uma abordagem mais genérica que permite componentes de data e hora e é identificável como número ou sequência de caracteres.
Com base na ordem numérica do formato ISO da data, converta para um fuso horário local e remova não dígitos. ou seja:
Uso
fonte
Javascript nativo:
fonte