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

IT技术 javascript jquery
2021-02-03 12:41:41

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

3个回答

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

同意这个答案是不正确的。它不产生 mm/dd/yyyy。
2021-03-13 12:41:41
这实际上不是 MM/dd/yyyy。那是 M/d/yyyy。您的约会对象需要前导零吗?
2021-03-14 12:41:41
如果使用 angular,您可能需要考虑:docs.angularjs.org/api/ng/filter/date
2021-03-23 12:41:41
上面进行了编辑,以说明 javascript 月份是从零开始的这一事实……在向用户显示数据时,您必须始终向月份添加一个以获取确切月份。
2021-03-29 12:41:41
正确答案应该是 var result = ((date.getMonth().toString().length > 1) ? (date.getMonth() + 1) : ('0' + (date.getMonth() + 1))) + '/' + ((date.getDate().toString().length > 1) ? date.getDate() : ('0' + date.getDate())) + '/' + date.getFullYear()
2021-04-10 12:41:41

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

getDay 返回星期几。不是您需要使用 getDate() 的日期
2021-03-16 12:41:41
这将返回 '2013/15/06' 为 'Sat Jun 01 2013 00:00:00 GMT-0400(东部夏令时间)'
2021-03-20 12:41:41
@Ankur:而不是使用 Moment.js 在提示的每个答案下复制您的评论,您可以提供代码如何与 Moment.js 一起使用。
2021-04-06 12:41:41
函数 getFormattedDate(date) { var start = new Date(date); var year = start.getFullYear(); var 月份 = (1 + start.getMonth()).toString(); 月 = 月.长度 > 1 ? 月份:'0' + 月份;var day = start.getDate().toString(); 天 = 天.长度 > 1 ? 天:'0' + 天;返回日 + '/' + 月 + '/' + 年;}
2021-04-08 12:41:41
@Ore4444,您在添加 1 之前将月份转换为字符串,这就是@Code Monkey说您返回 15 而不是 6 的原因。它应该是var month = (1 + date.getMonth()).toString();
2021-04-10 12:41:41

符合 ISO 标准的日期字符串

如果dateStringRFC282ISO8601标准的:
将字符串传递到Date构造函数

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

@EirikBirkeland 很好的建议。我滥用 moment 很多,因为它的 API 很好,甚至没有考虑过绒毛的数量。
2021-03-15 12:41:41
@RokoC.Buljan 如何在 javascript 中将“月 dd,yyyy”转换为“MM/dd/yyyy”?
2021-03-17 12:41:41
Moment.js对于简单的东西来说是巨大的。尝试使用日期格式。将我的 Webpack 构建时间缩短了 5 秒。
2021-03-19 12:41:41
真的考虑使用像 Moment.js 这样的库。它将格式化为所需的结果:)
2021-04-04 12:41:41
你混淆了你的日子和月份。2010-10-11 将是 10/11/2010
2021-04-09 12:41:41