我有一个日期格式如下:'2010-10-11T00:00:00+05:30'
。我需要使用JavaScript或jQuery将其格式化为MM/dd/yyyy
。请帮我完成这个任务。
我有一个日期格式如下:'2010-10-11T00:00:00+05:30'
。我需要使用JavaScript或jQuery将其格式化为MM/dd/yyyy
。请帮我完成这个任务。
尝试一下;请记住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的格式打印日期,但问题是关于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;
}
var month = (1 + date.getMonth()).toString();
。 - Moses Machua如果日期字符串符合RFC282和ISO8601标准:
将字符串传递给Date构造函数。
然后,要将其格式化为所需的日期输出,请使用Intl.DateTimeFormat,如下所示:
const dateString = "2020-09-30T12:52:27+05:30"; // ISO8601 compliant dateString
const date = new Date(dateString); // {object Date}
const dateFormatted = new Intl.DateTimeFormat("en-US", {
year: "numeric",
month: "2-digit",
day: "2-digit"
}).format(date);
console.log(dateFormatted); // "09/30/2020"
date.getMonth() + 1 // 9 (PS: use +1 since Month returns 0-based index)
date.getDate() // 30
date.getFullYear() // 2020
如果是非标准日期字符串:
将字符串拆分为已知部分,然后将变量传递给日期构造函数:
new Date(年份, 月份索引 [, 日 [, 小时 [, 分钟 [, 秒 [, 毫秒]]]]])
const dateString = "30/09/2020 12:52:27"; // Not ISO8601 compliant
const [d, M, y, h, m, s] = dateString.match(/\d+/g);
// PS: M-1 since Month is 0-based
const date = new Date(Date.UTC(y, M-1, d, h, m, s)); // {object Date}
const dateFormatted = new Intl.DateTimeFormat("en-US", {
year: "numeric",
month: "2-digit",
day: "2-digit"
}).format(date);
console.log(dateFormatted); // "09/30/2020"
toLocaleDateString
,后者更加简洁:function getDate(str) {var ops = {year: 'numeric'}; ops.month = ops.day = '2-digit'; return new Date(str).toLocaleDateString(0, ops);}
- omikesvar testGetDate = getDate('2010-10-11T00:00:00+05:30');
。不确定原因,但它在jsconsole.com上可以正常工作。 - Paul HegelIntl.DateTimeFormat
API。 - Wolfgang Kuehnnew Intl.DateTimeFormat('en-US').format(date)
- https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat - chrismarx