174

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

4

3 回答 3

295

尝试这个; 请记住,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());

于 2012-07-21T11:48:02.560 回答
182

所有其他答案都不能完全解决问题。他们打印格式为 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;
}

于 2013-04-02T12:59:18.703 回答
52

符合 ISO 标准的日期字符串

如果dateString符合 RFC282和ISO8601
字符串传递给Date Constructor

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

从这里我们可以使用Date Getters提取所需的值:

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

非标准日期字符串

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

新日期年,月索引[,日[,小时[,分钟[,秒[,毫秒]]]]]

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

于 2012-07-21T12:15:38.010 回答