在 JavaScript 中将日期格式设置为 MM/dd/yyyy

我有一个日期格式像这样的 '2010-10-11T00:00:00+05:30'。我必须使用 JavaScript 或 jQuery 格式化为 MM/dd/yyyy。任何人帮助我做同样的事情。

981936 次浏览

请尝试这样做; 请记住,JavaScript 月是0索引的,而天是1索引的。

var date = new Date('2010-10-11T00:00:00+05:30');
alert(((date.getMonth() > 8) ? (date.getMonth() + 1) : ('0' + (date.getMonth() + 1))) + '/' + ((date.getDate() > 9) ? date.getDate() : ('0' + date.getDate())) + '/' + date.getFullYear());

符合 ISO 标准的 DateString

如果 < strong > dateString 是符合 RFC282ISO8601的:
将字符串传递到 日期构造函数:

const dateString = "2020-10-30T12:52:27+05:30"; // ISO8601 compliant dateString
const D = new Date(dateString);                 // {object Date}

从这里,我们可以使用 约会指南提取所需的值:

D.getMonth() + 1  // 10 (PS: +1 since Month is 0-based)
D.getDate()       // 30
D.getFullYear()   // 2020

非标准日期字符串

如果是非标准日期字符串:
将字符串解构为已知部分,然后将变量传递给 日期构造函数:

新日期 (Year,monthIndex [ ,day [ ,hours [ ,minutes [ ,second [ ,millissecond ]]]])

const dateString = "30/10/2020 12:52:27";
const [d, M, y, h, m, s] = dateString.match(/\d+/g);


// PS: M-1 since Month is 0-based
const D = new Date(y, M-1, d, h, m, s);  // {object Date}




D.getMonth() + 1  // 10 (PS: +1 since Month is 0-based)
D.getDate()       // 30
D.getFullYear()   // 2020


所有其他的答案并不能完全解决这个问题。他们打印格式为 MM/dd/yyyy 的日期,但问题是关于 MM/dd/yyyy 的。注意到细微差别了吗?MM 表示,如果月是单位数字,则前导零必须填充该月,因此它始终是双位数字。

也就是说,MM/dd 是3/31,MM/dd 是03/31。

我创建了一个简单的函数来实现这一点。注意,相同的填充不仅适用于月份,而且也适用于月份的日期,这实际上使得 MM/DD/yyyy:

function getFormattedDate(date) {
var year = date.getFullYear();


var month = (1 + date.getMonth()).toString();
month = month.length > 1 ? month : '0' + month;


var day = date.getDate().toString();
day = day.length > 1 ? day : '0' + day;
  

return month + '/' + day + '/' + year;
}


使用 String.padStart ()对 ES2017进行更新,IE 以外的所有主流浏览器都支持。

function getFormattedDate(date) {
let year = date.getFullYear();
let month = (1 + date.getMonth()).toString().padStart(2, '0');
let day = date.getDate().toString().padStart(2, '0');
  

return month + '/' + day + '/' + year;
}