Получить строку в формате YYYYMMDD из объекта даты JS?

Я'пытаюсь с помощью JS превратить объект дата в строку в формате ГГГГММДД. Есть ли более простой способ, чем конкатенация Date.getYear(), Date.getMonth() и Date.getDay()?

Комментарии к вопросу (2)
Решение

Измененный фрагмент кода, который я часто использую:

Date.prototype.yyyymmdd = function() {
  var mm = this.getMonth() + 1; // getMonth() is zero-based
  var dd = this.getDate();

  return [this.getFullYear(),
          (mm>9 ? '' : '0') + mm,
          (dd>9 ? '' : '0') + dd
         ].join('');
};

var date = new Date();
date.yyyymmdd();
Комментарии (9)

Я не'т, как добавление к прототипу. Альтернативой может быть:

в

var rightNow = new Date();
var res = rightNow.toISOString().slice(0,10).replace(/-/g,"");


document.body.innerHTML += res;

в

Комментарии (11)

Вы можете использовать функция toISOString:

var today = new Date();
today.toISOString().substring(0, 10);

Это даст вам и "гггг-ММ-ДД" в формате.

Комментарии (4)

Moment.js может быть ваш друг

var date = new Date();
var formattedDate = moment(date).format('YYYYMMDD');
Комментарии (4)

Если вы Don'т нужна чисто на JS решение, вы можете использовать jQuery интерфейса чтобы сделать работу такой :

$.datepicker.formatDate('yymmdd', new Date());

Я обычно Дон'т, как импортировать слишком много библиотек. Но пользовательского интерфейса jQuery-это так полезно, вы будете, вероятно, использовать его где-нибудь еще в вашем проекте.

Посетите http://api.jqueryui.com/datepicker/ дополнительные примеры

Комментарии (0)

Это одна строка кода, который вы можете использовать, чтобы создать гггг-ММ-ДД строкой сегодня's дата.

var d = new Date().toISOString().slice(0,10);
Комментарии (2)

В дополнение к О-О'ы ответ Я'd, как рекомендуют отделять логические операции от обратного и поставить их как торфяники в переменных.

Кроме того, использовать функция concat() для обеспечения безопасной конкатенации переменных

 Date.prototype.yyyymmdd = function() {
   var yyyy = this.getFullYear();
   var mm = this.getMonth() < 9 ? "0" + (this.getMonth() + 1) : (this.getMonth() + 1); // getMonth() is zero-based
   var dd  = this.getDate() < 10 ? "0" + this.getDate() : this.getDate();
   return "".concat(yyyy).concat(mm).concat(dd);
  };

 Date.prototype.yyyymmddhhmm = function() {
   var yyyy = this.getFullYear();
   var mm = this.getMonth() < 9 ? "0" + (this.getMonth() + 1) : (this.getMonth() + 1); // getMonth() is zero-based
   var dd  = this.getDate() < 10 ? "0" + this.getDate() : this.getDate();
   var hh = this.getHours() < 10 ? "0" + this.getHours() : this.getHours();
   var min = this.getMinutes() < 10 ? "0" + this.getMinutes() : this.getMinutes();
   return "".concat(yyyy).concat(mm).concat(dd).concat(hh).concat(min);
  };

 Date.prototype.yyyymmddhhmmss = function() {
   var yyyy = this.getFullYear();
   var mm = this.getMonth() < 9 ? "0" + (this.getMonth() + 1) : (this.getMonth() + 1); // getMonth() is zero-based
   var dd  = this.getDate() < 10 ? "0" + this.getDate() : this.getDate();
   var hh = this.getHours() < 10 ? "0" + this.getHours() : this.getHours();
   var min = this.getMinutes() < 10 ? "0" + this.getMinutes() : this.getMinutes();
   var ss = this.getSeconds() < 10 ? "0" + this.getSeconds() : this.getSeconds();
   return "".concat(yyyy).concat(mm).concat(dd).concat(hh).concat(min).concat(ss);
  };

var d = new Date();
d.yyyymmdd();
d.yyyymmddhhmm();
d.yyyymmddhhmmss();

Немного более сухой скрипку, как полагают RiZKiT

https://jsfiddle.net/EricHerlitz/tuhhfxz9/

Комментарии (3)
new Date('Jun 5 2016').
  toLocaleString('en-us', {year: 'numeric', month: '2-digit', day: '2-digit'}).
  replace(/(\d+)\/(\d+)\/(\d+)/, '$3-$1-$2');

// => '2016-06-05'
Комментарии (2)

Я не'т, как изменение собственных объектов, и я думаю, что умножение-это яснее, чем строка заполнения принятого решения.

function yyyymmdd(dateIn) {
   var yyyy = dateIn.getFullYear();
   var mm = dateIn.getMonth()+1; // getMonth() is zero-based
   var dd  = dateIn.getDate();
   return String(10000*yyyy + 100*mm + dd); // Leading zeros for mm and dd
}

var today = new Date();
console.log(yyyymmdd(today));

Скрипка: http://jsfiddle.net/gbdarren/Ew7Y4/

Комментарии (7)

Равнина с JS (в ES5) решение без каких-либо возможной дате вопросам скачки, вызванные дату.toISOString() печать в формате:

var now = new Date();
var todayUTC = new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate()));
return todayUTC.toISOString().slice(0, 10).replace(/-/g, '');

Это в ответ на @weberste'комментарий @Пьер Гильбер'ы ответ.

Комментарии (7)

в

// UTC/GMT 0
document.write('UTC/GMT 0: ' + (new Date()).toISOString().slice(0, 19).replace(/[^0-9]/g, "")); // 20150812013509

// Client local time
document.write('<br/>Local time: ' + (new Date(Date.now()-(new Date()).getTimezoneOffset() * 60000)).toISOString().slice(0, 19).replace(/[^0-9]/g, "")); // 20150812113509

в

Комментарии (3)

в

var someDate = new Date();
var dateFormated = someDate.toISOString().substr(0,10);

консоль.журнал(dateFormated);

в

Комментарии (5)

Другой способ заключается в использовании toLocaleDateString с локалью, который имеет тупоконечников дата стандартный формат, таких как Швеция, Литва, Венгрия, Южная Корея, ...:

date.toLocaleDateString('se')

Чтобы удалить разделители (-) это просто вопрос замены номера-цифры:

в

console.log( new Date().toLocaleDateString('se').replace(/\D/g, '') );

в

Это не имеет потенциальной ошибки можно получить с мирового форматы даты: дата мирового может быть на один день по сравнению с дату в местном часовом поясе.

Комментарии (0)

Вы можете просто использовать этот код, чтобы получить дату в году

var date = new Date().getFullYear() + "-" + (parseInt(new Date().getMonth()) + 1) + "-" + new Date().getDate();
Комментарии (0)

Этот код исправить Пьер Гильбер'ы ответа:

(это работает даже после 10000 лет)

YYYYMMDD=new Date().toISOString().slice(0,new Date().toISOString().indexOf("T")).replace(/-/g,"")
Комментарии (0)

Немного упрощенная версия для Самый популярный ответ в этой теме https://stackoverflow.com/a/3067896/5437379 :

function toYYYYMMDD(d) {
    var yyyy = d.getFullYear().toString();
    var mm = (d.getMonth() + 101).toString().slice(-2);
    var dd = (d.getDate() + 100).toString().slice(-2);
    return yyyy + mm + dd;
}
Комментарии (0)

Этот парень здесь => http://blog.stevenlevithan.com/archives/date-time-format написал функцию format() для объекта Javascript'a Date, чтобы его можно было использовать с привычными буквенными форматами.

Если вам нужно полнофункциональное форматирование даты в вашем приложении на Javascript, используйте его. В противном случае, если вы хотите сделать что-то одно, то конкатенировать getYear(), getMonth(), getDay() будет, вероятно, проще всего.

Комментарии (0)

Похоже, что mootools предоставляет Date().format(): https://mootools.net/more/docs/1.6.0/Types/Date.

Однако я не уверен, что его стоит включать только для этой конкретной задачи.

Комментарии (0)

Работа от @О-О'ы ответ это даст вам строку даты в соответствии со строкой формата. Вы можете легко добавить 2 цифры года regex для года & миллисекунд, и если вы нуждаетесь в них.

Date.prototype.getFromFormat = function(format) {
    var yyyy = this.getFullYear().toString();
    format = format.replace(/yyyy/g, yyyy)
    var mm = (this.getMonth()+1).toString(); 
    format = format.replace(/mm/g, (mm[1]?mm:"0"+mm[0]));
    var dd  = this.getDate().toString();
    format = format.replace(/dd/g, (dd[1]?dd:"0"+dd[0]));
    var hh = this.getHours().toString();
    format = format.replace(/hh/g, (hh[1]?hh:"0"+hh[0]));
    var ii = this.getMinutes().toString();
    format = format.replace(/ii/g, (ii[1]?ii:"0"+ii[0]));
    var ss  = this.getSeconds().toString();
    format = format.replace(/ss/g, (ss[1]?ss:"0"+ss[0]));
    return format;
};

d = new Date();
var date = d.getFromFormat('yyyy-mm-dd hh:ii:ss');
alert(date);

Я не'т знаю, насколько эффективно, однако, что есть, особенно перфорация мудрый, потому что он использует много регулярных выражений. Он мог, вероятно, использовать некоторые работы я не мастер чистом JavaScript.

Комментарии (0)

Я обычно использую код ниже, когда я должен сделать это.

var date = new Date($.now());
var dateString = (date.getFullYear() + '-'
    + ('0' + (date.getMonth() + 1)).slice(-2)
    + '-' + ('0' + (date.getDate())).slice(-2));
console.log(dateString); //Will print "2015-09-18" when this comment was written

Объяснить, .срез(-2) дает нам последние два символа строки.

Так что ни на что, мы можем добавить, что "0" на день или месяц, и просто спросить за последние два с тех пор всегда два мы хотим.

Так что если MyDate.getMonth() возвращает 9, то это будет:

("0" + "9") // Giving us "09"

так что добавление .метод Slice(-2) о том, что дает нам два последних символа, который является:

("0" + "9").slice(-2)

"09"

А если дата.getMonth() возвращает значение 10, то это будет:

("0" + "10") // Giving us "010"

так что добавление .срез(-2) дает нам два последних знака, или:

("0" + "10").slice(-2)

"10"
Комментарии (0)