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

Pra*_*eep 128 javascript jquery

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

yog*_*ogi 247

试试这个; 请记住,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());
Run Code Online (Sandbox Code Playgroud)

  • 这实际上不是MM/dd/yyyy.那是M/d/yyyy.你的约会是否需要前导零? (83认同)
  • 如果使用angular,您可能需要考虑:https://docs.angularjs.org/api/ng/filter/date (6认同)
  • 正确的答案应该是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() (5认同)
  • 以上编辑,以说明javascript月份为零的事实...您必须始终在月份中添加一个以获得向用户显示数据的确切月份. (4认同)
  • 同意这个答案是不正确的.它不会产生mm/dd/yyyy. (3认同)
  • 正确答案是: var result = ((date.getMonth() > 8) ? (date.getMonth() + 1) : ('0' + (date.getMonth() + 1))) + '/' + ((date.getDate() > 9) ? date.getDate() : ('0' + date.getDate())) + '/' + date.getFullYear(); 这样我们就可以减少 toString 和 length 函数的调用。另外,条件 date.getMonth().toString().length > 1 将给出错误的结果,如 10 月份的 010。 (2认同)

Ore*_*444 142

所有其他答案都没有完全解决问题.他们打印格式为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;
}
Run Code Online (Sandbox Code Playgroud)


使用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;
}
Run Code Online (Sandbox Code Playgroud)

  • _ @ Ore4444_,您在添加1之前将月份转换为字符串,这就是为什么_ @ Code Monkey_表示您将返回15而不是6.它应该是`var month =(1 + date.getMonth()).toString();` (4认同)
  • 这是'2013年6月1日星期六01 00:00:00 GMT-0400(东部夏令时间)'返回'2013/15/06' (3认同)
  • getDay返回星期几.不是您需要使用getDate()的日期日 (3认同)
  • @Ankur:您可以使用Moment.js,而不是使用Moment.js在每个提示的答案下复制您的评论,而可以提供代码与Moment.js一起工作的方式。 (2认同)

Rok*_*jan 32

你可以:DategetMonth()

var d = new Date("2010-10-30T00:00:00+05:30");
Run Code Online (Sandbox Code Playgroud)


...或将您的字符串传递给+1Object:

d.getMonth()+1  // 10
d.getDate()     // 30
d.getFullYear() // 2010
Run Code Online (Sandbox Code Playgroud)

从这里您可以使用以下方法提取所需的内容:

var d = "2010-10-30T00:00:00+05:30".slice(0, 10).split('-');   
d[1] +'/'+ d[2] +'/'+ d[0]; // 10/30/2010
Run Code Online (Sandbox Code Playgroud)

请注意,基于(0-11).slice()返回月份数零,因此需要a..split()

在这里,你可以找到其他的列表干将:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

  • 对于简单的东西,Moment.js是*巨大的*.请尝试使用日期格式.剃掉我的Webpack构建时间5秒. (3认同)