Я'пытаюсь с помощью JS превратить объект дата
в строку в формате ГГГГММДД
. Есть ли более простой способ, чем конкатенация Date.getYear()
, Date.getMonth()
и Date.getDay()
?
Измененный фрагмент кода, который я часто использую:
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();
Я не'т, как добавление к прототипу. Альтернативой может быть:
в
var rightNow = new Date();
var res = rightNow.toISOString().slice(0,10).replace(/-/g,"");
<!-- Next line is for code snippet output only -->
document.body.innerHTML += res;
в
Вы можете использовать функция toISOString
:
var today = new Date();
today.toISOString().substring(0, 10);
Это даст вам и "гггг-ММ-ДД" в формате.
var date = new Date();
var formattedDate = moment(date).format('YYYYMMDD');
Если вы Don'т нужна чисто на JS решение, вы можете использовать jQuery интерфейса чтобы сделать работу такой :
$.datepicker.formatDate('yymmdd', new Date());
Я обычно Дон'т, как импортировать слишком много библиотек. Но пользовательского интерфейса jQuery-это так полезно, вы будете, вероятно, использовать его где-нибудь еще в вашем проекте.
Посетите http://api.jqueryui.com/datepicker/ дополнительные примеры
Это одна строка кода, который вы можете использовать, чтобы создать гггг-ММ-ДД строкой
сегодня's дата.
var d = new Date().toISOString().slice(0,10);
В дополнение к О-О'ы ответ Я'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
Я не'т, как изменение собственных объектов, и я думаю, что умножение-это яснее, чем строка заполнения принятого решения.
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));
Скрипка:
Равнина с 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'комментарий @Пьер Гильбер'ы ответ.
в
// 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
в
в
var someDate = new Date();
var dateFormated = someDate.toISOString().substr(0,10);
консоль.журнал(dateFormated);
в
Другой способ заключается в использовании toLocaleDateString
с локалью, который имеет тупоконечников дата стандартный формат, таких как Швеция, Литва, Венгрия, Южная Корея, ...:
date.toLocaleDateString('se')
Чтобы удалить разделители (-
) это просто вопрос замены номера-цифры:
в
console.log( new Date().toLocaleDateString('se').replace(/\D/g, '') );
в
Это не имеет потенциальной ошибки можно получить с мирового форматы даты: дата мирового может быть на один день по сравнению с дату в местном часовом поясе.
Вы можете просто использовать этот код, чтобы получить дату в году
var date = new Date().getFullYear() + "-" + (parseInt(new Date().getMonth()) + 1) + "-" + new Date().getDate();
Немного упрощенная версия для Самый популярный ответ в этой теме 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;
}
Этот парень здесь => http://blog.stevenlevithan.com/archives/date-time-format написал функцию format()
для объекта Javascript'a Date
, чтобы его можно было использовать с привычными буквенными форматами.
Если вам нужно полнофункциональное форматирование даты в вашем приложении на Javascript, используйте его. В противном случае, если вы хотите сделать что-то одно, то конкатенировать getYear(), getMonth(), getDay() будет, вероятно, проще всего.
Похоже, что mootools предоставляет Date().format()
: https://mootools.net/more/docs/1.6.0/Types/Date.
Однако я не уверен, что его стоит включать только для этой конкретной задачи.
Работа от @О-О'ы ответ это даст вам строку даты в соответствии со строкой формата. Вы можете легко добавить 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.
Я обычно использую код ниже, когда я должен сделать это.
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"