jquery 在JavaScript中将日期格式设置为MM/dd/yyyy [重复]

vx6bjr1n  于 2023-08-04  发布在  jQuery
关注(0)|答案(3)|浏览(132)

此问题在此处已有答案

Where can I find documentation on formatting a date in JavaScript?(39答案)
10年前就关门了。
我有一个这样的日期格式'2010-10-11T00:00:00+05:30'。我必须使用JavaScript或jQuery将格式设置为MM/dd/yyyy。任何人都可以帮助我做同样的事情。

jrcvhitl

jrcvhitl1#

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

字符串

pcrecxhr

pcrecxhr2#

有些答案并不能完全解决问题。他们打印的日期格式为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()更新ES 2017,除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;
}

atmip9wb

atmip9wb3#

ISO兼容 dateString

如果 * dateString * 符合RFC282和ISO8601:
将字符串传入Date Constructor。然后,使用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 Getters来提取所需的值:

date.getMonth() + 1  // 9   (PS: use +1 since Month returns 0-based index)
date.getDate()       // 30
date.getFullYear()   // 2020


在上面的例子中,如果需要的话,你可能还想使用String.prototype.padStart来添加月份和日期的前导零。

非标准日期字符串

如果非标准日期字符串:
将字符串分解为已知部分,然后将变量传递给Date Constructor

new Dateyear,monthIndex [,day [,hours [,minutes [,seconds [,milliseconds]

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"

相关问题