Как вывести дату в javascript в ISO 8601 без миллисекунд и с Z

вот стандартный способ сериализации даты как строки ISO 8601 в JavaScript:

var now = new Date();
console.log( now.toISOString() );
// outputs '2015-12-02T21:45:22.279Z'

мне нужен точно такой же выход, но без миллисекунд. Как я могу вывести 2015-12-02T21:45:22Z

5 ответов


простой способ:

console.log( now.toISOString().split('.')[0]+"Z" );

Это решение:

var now = new Date(); 
var str = now.toISOString();
var res = str.replace(/\.[0-9]{3}/, '');
alert(res);

находит . (точка) и удаляет 3 символов.

http://jsfiddle.net/boglab/wzudeyxL/7/


используйте slice для удаления нежелательной части

var now = new Date();
alert( now.toISOString().slice(0,-5)+"Z");

вы можете использовать комбинацию split() и shift() чтобы удалить миллисекунды из ISO 8601 строку:

let date = new Date().toISOString().split( '.' ).shift() + 'Z';

console.log( date );

или, возможно, перезаписать его с этим? (это модифицированный полифилл из здесь)

function pad(number) {
  if (number < 10) {
    return '0' + number;
  }
  return number;
}

Date.prototype.toISOString = function() {
  return this.getUTCFullYear() +
    '-' + pad(this.getUTCMonth() + 1) +
    '-' + pad(this.getUTCDate()) +
    'T' + pad(this.getUTCHours()) +
    ':' + pad(this.getUTCMinutes()) +
    ':' + pad(this.getUTCSeconds()) +
    'Z';
};