ti-enxame.com

Javascript: data e hora atual de saída no formato AAAA / mm / dd hh: m: sec

Preciso enviar o datetime atual do UTC como uma string com o seguinte formato:
YYYY/mm/dd hh:m:sec

Como faço para conseguir isso com Javascript?

50
sarsnake

Você pode construí-lo manualmente:

var m = new Date();
var dateString = m.getUTCFullYear() +"/"+ (m.getUTCMonth()+1) +"/"+ m.getUTCDate() + " " + m.getUTCHours() + ":" + m.getUTCMinutes() + ":" + m.getUTCSeconds();

e para forçar dois dígitos nos valores que requerem, você pode usar algo como isto:

("0000" + 5).slice(-2)

Que ficaria assim:

var m = new Date();
var dateString =
    m.getUTCFullYear() + "/" +
    ("0" + (m.getUTCMonth()+1)).slice(-2) + "/" +
    ("0" + m.getUTCDate()).slice(-2) + " " +
    ("0" + m.getUTCHours()).slice(-2) + ":" +
    ("0" + m.getUTCMinutes()).slice(-2) + ":" +
    ("0" + m.getUTCSeconds()).slice(-2);

console.log(dateString);
76
Joseph Marikle

Com o formato de data jQuery:

$.format.date(new Date(), 'yyyy/MM/dd HH:mm:ss');

https://github.com/phstc/jquery-dateFormat

Desfrutar

14
user3452845

Nenhuma biblioteca, uma linha, devidamente acolchoada

str = (new Date()).toISOString().slice(0, 19).replace(/-/g, "/").replace("T", " ");

Ele usa a função interna Date.toISOString(), corta os ms, substitui os hífens por barras e substitui o T por um espaço para deixar de dizer '2019-01-05T09:01:07.123' para '2019/01/05 09:01:07'.

Hora local em vez de UTC

now = new Date();
const offsetMs = now.getTimezoneOffset() * 60 * 1000;
const dateLocal = new Date(now.getTime() - offsetMs);
str = dateLocal.toISOString().slice(0, 19).replace(/-/g, "/").replace("T", " ");
13
MarredCheese

Não testado, mas algo como isto:

var now = new Date();
var str = now.getUTCFullYear().toString() + "/" +
          (now.getUTCMonth() + 1).toString() +
          "/" + now.getUTCDate() + " " + now.getUTCHours() +
          ":" + now.getUTCMinutes() + ":" + now.getUTCSeconds();

Obviamente, você precisará preencher as horas, minutos e segundos em dois dígitos ou, às vezes, terá tempos estranhos como "2011/12/2 19: 2: 8".

1
dgvid

Eu escrevi uma biblioteca simples para manipular o objeto de data do JavaScript. Você pode tentar isso:

var dateString = timeSolver.getString(new Date(), "YYYY/MM/DD HH:MM:SS.SSS")

Biblioteca aqui: https://github.com/sean1093/timeSolver

1
sean1093

Publicando outra solução de script DateX (autor) para qualquer pessoa interessada

O DateX NÃO quebra o objeto Date original, mas oferece uma interface idêntica com métodos adicionais para formatar, localizar, analisar, diferenciar e validar datas facilmente. Então, é possível fazer new DateX(..) em vez de new Date(..) ou usar a lib como utilitários de data ou mesmo como invólucro ou substituição em torno da classe Date.

O formato da data usado é idêntico a formato da data php .

formato c também é suportado (embora não totalmente)

para o exemplo publicado (YYYY/mm/dd hh:m:sec), o formato a ser usado seria Y/m/d H:i:s, por exemplo

var formatted_date = new DateX().format('Y/m/d H:i:s');

ou

var formatted_now_date_gmt = new DateX(DateX.UTC()).format('Y/m/d H:i:s');

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC

0
Nikos M.