Как я произвожу отформатированную строку ISO 8601 в JavaScript?

У меня есть a Date объект. Как я представляю title часть следующего отрывка?

<abbr title="2010-04-02T14:12:07">A couple days ago</abbr>

У меня есть "относительное время в словах" часть из другой библиотеки.

Я попробовал следующее:

function isoDate(msSinceEpoch) {

   var d = new Date(msSinceEpoch);
   return d.getUTCFullYear() + '-' + (d.getUTCMonth() + 1) + '-' + d.getUTCDate() + 'T' +
          d.getUTCHours() + ':' + d.getUTCMinutes() + ':' + d.getUTCSeconds();

}

Но это дает мне:

"2010-4-2T3:19"
241
задан Joshua Pinter 25 March 2016 в 09:26
поделиться

3 ответа

Отсутствует знак «+» после буквы «T»

isoDate: function(msSinceEpoch) {
  var d = new Date(msSinceEpoch);
  return d.getUTCFullYear() + '-' + (d.getUTCMonth() + 1) + '-' + d.getUTCDate() + 'T'
         + d.getUTCHours() + ':' + d.getUTCMinutes() + ':' + d.getUTCSeconds();
}

.

Для начальных нулей вы можете использовать это из здесь :

function PadDigits(n, totalDigits) 
{ 
    n = n.toString(); 
    var pd = ''; 
    if (totalDigits > n.length) 
    { 
        for (i=0; i < (totalDigits-n.length); i++) 
        { 
            pd += '0'; 
        } 
    } 
    return pd + n.toString(); 
} 

Используя это так:

PadDigits(d.getUTCHours(),2)
3
ответ дан 23 November 2019 в 03:14
поделиться

См. Последний пример на странице https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference:Global_Objects:Date :

/* Use a function for the exact format desired... */
function ISODateString(d) {
    function pad(n) {return n<10 ? '0'+n : n}
    return d.getUTCFullYear()+'-'
         + pad(d.getUTCMonth()+1)+'-'
         + pad(d.getUTCDate())+'T'
         + pad(d.getUTCHours())+':'
         + pad(d.getUTCMinutes())+':'
         + pad(d.getUTCSeconds())+'Z'
}

var d = new Date();
console.log(ISODateString(d)); // Prints something like 2009-09-28T19:03:12Z
63
ответ дан 23 November 2019 в 03:14
поделиться

Я бы просто использовал это небольшое расширение для Date - http://blog.stevenlevithan.com/archives/date -time-format

var date = new Date(msSinceEpoch);
date.format("isoDateTime"); // 2007-06-09T17:46:21
2
ответ дан 23 November 2019 в 03:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: