Как я могу получить этот формат временной метки с помощью javascript / jquery?

#javascript #jquery

#javascript #jquery

Вопрос:

Я хочу получить этот формат :

2019-03-24 15:05:20

Вот что я пробовал:

 var today = new Date();
var date = today.getFullYear() '-' (today.getMonth() 1) '-' today.getDate();
var time = today.getHours()   ":"   today.getMinutes()   ":"   today.getSeconds();
var dateTime = date ' ' time;
  

Я получил:

2019-3-24 15:0:20

В нем отсутствуют начальные нули.

Ответ №1:

Это потому, что числа, меньшие 10, должны быть дополнены нулем, но это не так.

Вы можете использовать padStart функцию для достижения ожидаемого результата — добавить начальный символ 0, если длина числа меньше 2. Я немного изменил ваш код, но все, что вам нужно, это использовать .toString().padStart(2, '0') для числа.

 var today = new Date();

var date = [
  today.getFullYear(),
  today.getMonth()   1,
  today.getDate(),
].map((value) => value.toString().padStart(2, '0')).join('-');

var time = [
  today.getHours(),
  today.getMinutes(),
  today.getSeconds(),
].map((value) => value.toString().padStart(2, '0')).join(':');;


var dateTime = date   ' '   time;
console.log(dateTime);  

Ответ №2:

Это довольно близко к ISO 8601, так что давайте начнем с этого.

 const d = new Date();
d
  .toISOString() // Convert date to a string in the format of 2019-03-25T00:07:22.0253Z
  .substr(0, 19)  // Strip off the milliseconds and Zulu timezone indication
  .replace('T', ' '); // Replace the T for "time" with a space
  

В результате вы получите дату в формате 2019-03-25 00:07:22 .

Комментарии:

1. Почему это было отклонено? Это совершенно разумное решение представленной проблемы, и оно хорошо документировано. В наши дни я действительно не понимаю Stack Overflow.

Ответ №3:

Вы можете использовать троичную операцию для простого использования. Это должно дать вам начальный ноль.

         var today = new Date();
        var date = today.getFullYear()   '-'   (today.getMonth()   1)   '-'   today.getDate();
        var time = today.getHours()   ":"   (today.getMinutes() < 10 ? '0' : '')   today.getMinutes()   ":"   today.getSeconds();
        var dateTime = date   ' '   time;

        console.log(dateTime, 'result');
  

Ответ №4:

Вы можете использовать:

 var d = new Date();
d = new Date(d.getTime() - 3000000);
var date_format_str = d.getFullYear().toString() "-" ((d.getMonth() 1).toString().length==2?(d.getMonth() 1).toString():"0" (d.getMonth() 1).toString()) "-" (d.getDate().toString().length==2?d.getDate().toString():"0" d.getDate().toString()) " " (d.getHours().toString().length==2?d.getHours().toString():"0" d.getHours().toString()) ":" ((parseInt(d.getMinutes()/5)*5).toString().length==2?(parseInt(d.getMinutes()/5)*5).toString():"0" (parseInt(d.getMinutes()/5)*5).toString()) ":00";
console.log(date_format_str);