我有这个日期:
2015-05-28T23:00:00.000Z
我需要将它转换为本地日期(以这种格式):
29/05/2015
根据上面的日期字符串,我希望上面的格式化日期是正确的。
我该怎么做?
谢谢
答案 0 :(得分:1)
将其转换为Date对象:
var dateString = '2015-05-28T23:00:00.000Z';
var date = new Date(dateString)
然后你不能格式化它:
var formatedDate = date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear();
但您也可以使用moment.js
moment(dateString).format('DD/MM/YYYY');
答案 1 :(得分:1)
其他地方已经很好地介绍了使用Date构造函数来解析字符串并不是一个好主意。 OP中的格式与ES5一致,将由现代浏览器正确解析,但IE 8仍然具有重要的用户份额。
手动解析字符串并不困难:
function isoStringToDate(s) {
var b = s.split(/\D/);
return new Date(Date.UTC(b[0], --b[1], b[2], b[3], b[4], b[5], b[6]));
}
然后格式化它:
function dateToDMY(d) {
function z(n){return (n<10?'0':'') + n}
return z(d.getDate()) + '/' + z(d.getMonth()+1) + '/' + d.getFullYear();
}
console.log(dateToDMY(isoStringToDate('2015-05-28T23:00:00.000Z'))); // 29/05/2015
为了与ES5保持一致,解析函数应该检查值是否超出范围,但是如果您对字符串的正确性有信心则不需要。
答案 2 :(得分:0)
感谢您的回复。
我通过这样做了格式化:
var d = new Date('2015-05-28T23:00:00.000Z');
var n = d.getDate() + '/' + (d.getMonth() +1 ) + '/' + d.getFullYear();
document.getElementById("demo").innerHTML = n;
答案 3 :(得分:0)
请在脚本中添加以下代码
<script>
var d = new Date("2015-05-28T23:00:00.000Z");
var str=d.toString();
var date = new Date(str),
mnth = ("0" + (date.getMonth()+1)).slice(-2),
day = ("0" + date.getDate()).slice(-2);
var local_date=[ date.getFullYear(), mnth, day ].join("/"); //yyyy/mm/dd
</script>
希望它有效。谢谢你