Javascript date - ведущий 0 дней и месяцев, если применимо
Есть ли чистый способ добавить 0 перед днем или месяцем, когда день или месяц меньше 10:
var myDate = new Date();
var prettyDate =(myDate.getFullYear() +'-'+ myDate.getMonth()) +'-'+ myDate.getDate();
Это будет выводиться как:
2011-8-8
Я бы хотел:
2011-08-08
Ответы
Ответ 1
Нет, нет хорошего способа сделать это. Вы должны прибегнуть к чему-то вроде:
var myDate = new Date();
var year = myDate.getFullYear();
var month = myDate.getMonth() + 1;
if(month <= 9)
month = '0'+month;
var day= myDate.getDate();
if(day <= 9)
day = '0'+day;
var prettyDate = year +'-'+ month +'-'+ day;
Ответ 2
Формат, который, как вам кажется, выглядит как ISO. Поэтому используйте toISOString()
:
var d = new Date();
var date = d.toISOString().slice(0,10); // "2014-05-12"
Ответ 3
var myDate = new Date();
var m = myDate.getMonth() + 1;
var d = myDate.getDate();
m = m > 9 ? m : "0"+m;
d = d > 9 ? d : "0"+d;
var prettyDate =(myDate.getFullYear() +'-'+ m) +'-'+ d;
... и образец: http://jsfiddle.net/gFkaP/
Ответ 4
Вам нужно будет вручную проверить, нужен ли ему нулевой уровень и при необходимости добавить его...
var m = myDate.getMonth();
var d = myDate.getDate();
if (m < 10) {
m = '0' + m
}
if (d < 10) {
d = '0' + d
}
var prettyDate = myDate.getFullYear() +'-'+ m +'-'+ d;
Ответ 5
Да, получите String.js
от Rumata, а затем используйте:
'%04d-%02d-%02d'.sprintf(myDate.getFullYear(),
myDate.getMonth() + 1,
myDate.getDate());
NB: не забывайте + 1
в поле месяца. Поле месяца месяца Date
начинается с нуля, а не одного!
Если вы не хотите использовать дополнительную библиотеку, тривиальная встроенная функция выполнит задание добавления нулей:
function date2str(d) {
function fix2(n) {
return (n < 10) ? '0' + n : n;
}
return d.getFullYear() + '-' +
fix2(d.getMonth() + 1) + '-' +
fix2(d.getDate());
}
или даже добавить его в прототип Date
:
Date.prototype.ISO8601date = function() {
function fix2(n) {
return (n < 10) ? '0' + n : n;
}
return this.getFullYear() + '-' +
fix2(this.getMonth() + 1) + '-' +
fix2(this.getDate());
}
(см. http://jsfiddle.net/alnitak/M5S5u/):
var d = new Date();
var s = d.ISO8601date();
Ответ 6
К сожалению, в javascript нет встроенного формата даты. Либо используйте существующую библиотеку (пример http://blog.stevenlevithan.com/archives/date-time-format), либо создайте собственный метод для добавления начального нуля.
var addLeadingZeroIfNeeded = function addLeadingZeroIfNeeded(dateNumber) {
if (String(dateNumber).length === 1) {
return '0' + String(dateNumber);
}
return String(dateNumber);
},
myDate = new Date(),
prettyDate;
prettyDate = myDate.getFullYear() + '-' + addLeadingZeroIfNeeded(myDate.getMonth()) + '-' + addLeadingZeroIfNeeded(myDate.getDate());
ИЗМЕНИТЬ
Как сказал Алнитак, помните, что месяц я JavaScript начинается с 0, а не с 1.
Ответ 7
Самый простой способ сделать это - добавить zero
, а затем использовать .slice(-2)
.
С помощью этой функции вы всегда возвращаете последние 2 символа string
.
var month = 8;
var monthWithLeadingZeros = ('0' + month).slice(-2);
Проверьте этот пример:
http://codepen.io/Shven/pen/vLgQMQ?editors=101
Ответ 8
В течение месяца,
var month = ("0" + (myDate.getMonth() + 1)).slice(-2);
В течение дня,
var day = ("0" + (myDate.getDate() + 1)).slice(-2);
Ответ 9
Вы можете попробовать вот так
На день:
("0" + new Date().getDate()).slice(-2)
На месяц:
("0" + (new Date().getMonth() + 1)).slice(-2)