Format date to MM/dd/yyyy in JavaScript
我有这样的日期格式'2010-10-11T00:00:00+05:30'。我必须使用javascript或jquery将格式设置为MM/dd/yyyy。有人帮我做同样的事。
- 这是如何复制的,一个人问文档在哪里,另一个人问如何将日期格式化为特定格式…?
尝试这样做;记住,javascript月是0索引的,而天是1索引的。
1 2
| var date = new Date('2010-10-11T00:00:00+05:30');
alert((date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear()); |
- 月/日/年-将月放在第一位
- 上面的编辑说明了javascript月份是以零为基础的事实…在向用户显示数据时,您必须始终在月份中添加一个以获取准确的月份。
- 实际上不是mm/dd/yyyy。那是M/D/YYYY。你的约会需要前导零吗?
- 如果使用Angular,您可能需要考虑:docs.angularjs.org/api/ng/filter/date
- 这个答案是错误的。请看下面我的答案。
- 真的可以考虑使用像moment.js这样的库。它将按所需结果格式化:)
- 同意此答案不正确。它不产生mm/dd/yyyy。
- 为什么我们必须在.getmonth()中添加+1,而不是在另一个中?我本来打算在现在的日期加上90天,所以日期和年份会被计算罚款,而不是月份。我必须在GetMonth中添加+1,为什么?
- 正确答案应该是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())
- @Akshaychawla你必须在date.getMonth()中加上1,因为jan是0。
- 有没有可以转换成特定日期格式的JS方法?
- 不需要日期对象,这不会产生所需的格式,并且可能会根据运行的时区返回不同的日、月和年值。
- 见下面我的答案,也更新到ES2019
- @Jyotirmayaprusty不,不是。10将成为010。
所有其他的答案都不能完全解决这个问题。他们打印的日期格式为mm/dd/yyyy,但问题是关于mm/dd/yyyy。注意到细微的区别吗?mm表示如果月份是一个数字,则前导零必须填充月份,因此它始终是一个双位数。
即,mm/dd为3/31,mm/dd为3/31。
我创建了一个简单的函数来实现这一点。请注意,相同的填充不仅应用于月份,而且也应用于月份的日期,这实际上使这个月/日/年:
1 2 3 4 5 6 7 8 9 10 11
| 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除外。
1 2 3 4 5 6 7
| 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/15/06'作为'2013年6月1日星期六00:00:00 GMT-0400(东部夏季)'
- @ORE4444,在添加1之前将月份转换为字符串,这就是@code monkey说返回15而不是6的原因。应该是var month = (1 + date.getMonth()).toString();。
- GetDay返回星期几。不是日期日,您需要使用getDate()。
- 谢谢@gh9和M.machua。我把你的评论整合到代码中了
- 我更喜欢这个答案。但是,前面的"0"也应该添加到year中,以处理长度小于4位数的年份。
- 这是年/月/日。虽然比接受的答案更接近。
- 谢谢@hamboy。更正。
- 真的可以考虑使用像moment.js这样的库。它将按所需结果格式化:)
- @Ankur:相反,您可以使用moment.js在提示的每个答案下复制您的评论,您可以向代码说明它如何与moment.js一起工作。
- 谢谢@ore4444,它工作得很好
- 我在这个问题上遇到了麻烦,发现:stackoverflow.com/questions/4929382/…从这个问题中,我可以得到下面的答案。
- 函数getFormattedDate(日期)var start=新日期(日期);var year=start.getfullYear();var month=(1+start.getMonth()).toString();month=month.length>1?月:'0'+月;var day=start.getDate().toString();day=day.length>1?day:'0'+天;返回日+'/'+月+'/'+年;
将字符串传递到Date对象中:
1
| var d = new Date("2010-10-30T00:00:00+05:30"); |
从这里,您可以使用以下方法提取所需的内容:
1 2 3
| d.getMonth()+1 // 10
d.getDate() // 30
d.getFullYear() // 2010 |
注意,getMonth()返回基于零的月份数(0-11),因此需要+1。
您可以在这里找到其他getter的列表:https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/date
另一种方法,使用.slice()和.split()。
1 2
| var d ="2010-10-30T00:00:00+05:30".slice(0, 10).split('-');
d[1] +'/'+ d[2] +'/'+ d[0]; // 10/30/2010 |
- 你把你的日子和月份混在一起了。2010年10月11日为2010年10月11日
- 真的可以考虑使用像moment.js这样的库。它将按所需结果格式化:)
- @rokoc.buljan如何在javascript中将"month dd,yyyy"转换为"mm/dd/yyyy"?
- moment.js对于简单的东西来说是巨大的。改为尝试日期格式。从我的Webpack构建时间上节省了5秒。
- @Eirikbirkeland很好的建议。我经常滥用时刻,因为它是一个很好的API,甚至没有考虑到绒毛的数量。