我正在使用Javascript Date对象toString方法格式化日期,如下所示
var firstDate ='13/11/2015 13:27:24';
var secondDate ='07/11/2015 13:19:45';
var dateDisplay1 = Date.parse(firstDate).toString("dd/MM/yyyy HH:mm");
输出:13/11/2015 13:27 => 11月13日是正确的
var dateDisplay2 = Date.parse(secondDate ).toString("dd/MM/yyyy HH:mm");
11/07/2015 13:19
输出:11/07/2015 13:19 => 7月11日错误应该是11月7日
dateDisplay2的预期为 07/11/2015 13:19
答案 0 :(得分:2)
<强>已更新强>
以下是手动执行此操作的一种方法:
http://jsfiddle.net/gratiafide/kgstubtn/18/
<强>使用Javascript:强>
var firstDate = '13/11/2015 13:27:24';
var secondDate = '07/11/2015 13:19:45';
document.getElementById("myBtn").addEventListener("click", function () {
var splitHalf = firstDate.split(" ");
var splitCalendar = splitHalf[0].split("/");
var splitMinutes = splitHalf[1].split(":");
var date = splitCalendar[0] + "/" + splitCalendar[1] + "/" + splitCalendar[2] + " " + splitMinutes[0] + ":" + splitMinutes[1];
document.getElementById("demo").innerHTML = date;
});
<强> HTML:强>
<p>Click the button to display your date formatted correctly.</p>
<button id="myBtn">Try it</button>
<p id="demo"></p>
答案 1 :(得分:2)
var dateDisplay1 = Date.parse(firstDate).toString(“dd / MM / yyyy HH:mm”);
这里有一些问题。
解析日期字符串主要取决于实现,并且遵循以下标准可能会产生不一致的结果。您应该手动解析日期字符串,如果您只有一种格式并且确定它是有效日期,则库可以提供帮助但是2行功能就足够了(见下文)。测试有效日期只需要一行。
Date.parse 返回一个数字,这是一个时间值,因此Date.parse(...).toString()
正在调用Number.prototype.toString,其中传递的参数是基数。所以如果 Date.parse返回一个合适的值,那么:
new Date(Date.parse(...)).toString()
是必需的。
如果您希望以特定格式显示日期字符串,您可以测试对internationalization API的支持并使用它并回退到您自己的函数(或者只使用您自己的函数),例如
function parseDMY(s) {
var b = s.split(/\D+/);
return new Date(b[2], b[1]-1, b[0], b[3], b[4], b[5]);
}
function formatDateDMYhm(d) {
// Use internationalization API if available
if (typeof Intl == 'object' && typeof Intl.DateTimeFormat == 'function') {
options = {
year: 'numeric', month: '2-digit', day: '2-digit',
hour: '2-digit', minute: '2-digit', /* second: '2-digit', */
hour12: false
};
return d.toLocaleString('en-GB', options);
}
// Otherwise, use bespoke function
function z(n){return (n<10? '0':'') + n}
return z(d.getDate()) + '/' + z(d.getMonth()) + '/' + d.getFullYear() +
' ' + z(d.getHours()) + ':' + z(d.getMinutes());
}
var firstDate ='13/11/2015 13:27:24';
var secondDate ='07/11/2015 13:19:45';
document.write(formatDateDMYhm(parseDMY(firstDate)) + '<br>');
document.write(formatDateDMYhm(parseDMY(secondDate)));
虽然如果使用国际化API,它会在日期之后在某些浏览器(例如Chrome)中插入额外的逗号,但不会在其他浏览器(例如IE)中插入,所以即使使用标准也不一定产生“标准”结果。也许在这种情况下不应该使用它。使用月份名称不那么模糊,因此请考虑使用它,例如2015年11月13日13:27。
答案 2 :(得分:0)
secondDate之后有一个空格。删除它。
var dateDisplay2 = Date.parse(secondDate).toString("dd/MM/yyyy HH:mm");
答案 3 :(得分:-1)
只需使用新的日期(字符串)并传递日期字符串。
由于