用JavaScript填充日期零填充

vai*_*ain 7 javascript jquery

我想格式化这样的日期:

May 02 2013

但目前,我的格式如下:

May 2 2013

如何将这种类型的日期归零,以便日期中的日期02不仅仅是2


这是我正在使用的代码:

var m_names = new Array("January", "February", "March", 
"April", "May", "June", "July", "August", "September", 
"October", "November", "December");

var d = new Date();
var curr_date = d.getDate();
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
alert( m_names[curr_month] + " " +curr_date + " " + curr_year);
Run Code Online (Sandbox Code Playgroud)

这里有jsFiddle代码

pal*_*aѕн 17

你可以实现这样的逻辑:

var d = new Date();
var curr_date = ("0" + d.getDate()).slice(-2);
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
console.log( m_names[curr_month] + " " +curr_date + " " + curr_year);
Run Code Online (Sandbox Code Playgroud)

小提琴


更新 - (2017年10月1日)

EcmaScript 2017或ES8引入了两种新的String原型方法: padStart()padEnd().我们可以在字符串之前或之后添加一些额外的空格或破折号(或任何其他字符).我们可以在这里使用它:

var curr_date = d.getDate().toString().padStart(2,0);
Run Code Online (Sandbox Code Playgroud)

(如果我们不需要将d.getDate()转换为字符串,则此语法可能会更短,因为padStart仅适用于字符串)

演示:

var m_names = new Array("January", "February", "March",
  "April", "May", "June", "July", "August", "September",
  "October", "November", "December");

var d = new Date('10/1/2017');
var curr_date = d.getDate().toString().padStart(2, 0);
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
var formatted_date = m_names[curr_month] + " " + curr_date + " " + curr_year;

console.log(formatted_date);
Run Code Online (Sandbox Code Playgroud)


Sir*_*ton 5

就是你可以做的。只需查看日期是否大于 9。如果是则使用它,如果不是则添加前导零

var curr_date = d.getDate();
curr_date = curr_date > 9 ? curr_date : "0" + curr_date;
Run Code Online (Sandbox Code Playgroud)