Javascript日期对象,IE和Safari中日期对象的getDate()、getMonth()和getFullYear()
Posted
技术标签:
【中文标题】Javascript日期对象,IE和Safari中日期对象的getDate()、getMonth()和getFullYear()【英文标题】:Javascript date object, getDate(), getMonth() and getFullYear() of date object in IE and Safari 【发布时间】:2019-03-24 14:22:23 【问题描述】:我在我的 javascript 代码中使用此函数将 dateTime 对象格式化为字符串,此函数适用于 Firefox 和 Chrome,但不适用于 IE 和 Safari。 有谁知道该怎么做才能使它也适用于 Safari 和 IE?
日期对象在 Chrome 中如下所示:Mon Mar 25 2019 00:00:00 GMT+0100 (CET)
function formatDateTimeToString(date)
var dd = (date.getDate() < 10 ? '0' : '') + date.getDate();
var MM = ((date.getMonth() + 1) < 10 ? '0' : '') + (date.getMonth() + 1);
var yyyy = date.getFullYear();
var hours = (date.getHours() < 10 ? '0' : '') + date.getHours();
var minutes = (date.getMinutes() < 10 ? '0' : '') + date.getMinutes();
return (dd + "." + MM + "." + yyyy + ' ' + hours + ':' + minutes);
console.log(formatDateTimeToString(new Date()));
【问题讨论】:
使用moment.js怎么样 你在 safari 和 IE 中得到了什么 我得到了 NaN.NaN。 ...在 Safari 和 IE 中 moment如何解决这个问题? "date 对象看起来像这样..." Date 对象只是一个数字(一个时间值)和一些方法,直到最近,默认的字符串表示还依赖于实现。正如 Trincot 所说,检查您的问题是否与解析无关,因为 OP 中没有任何内容在实现之间应该有所不同。 【参考方案1】:如果Safari的日期对象的生成方式与Chrome相同,那么至少在我的旧版Safari中代码运行成功,如下所示:
function formatDateTimeToString(date)
var dd = (date.getDate() < 10 ? '0' : '') + date.getDate();
var MM = ((date.getMonth() + 1) < 10 ? '0' : '') + (date.getMonth() + 1);
var yyyy = date.getFullYear();
var hours = (date.getHours() < 10 ? '0' : '') + date.getHours();
var minutes = (date.getMinutes() < 10 ? '0' : '') + date.getMinutes();
return (dd + "." + MM + "." + yyyy + ' ' + hours + ':' + minutes);
var d = document;
d.w = d.writeln;
var date = new Date("Mon Mar 25 2019 00:00:00 GMT+0100 (CET)");
/* this works */
d.w( formatDateTimeToString(date)+"<BR>");
// output:
// 24.03.2019 16:00
如果您尝试使用包含连字符的字符串实例化 Date 对象,则可能会在 Safari 中得到 NaN,如下所示:
var d = document;
d.w = d.writeln;
date = new Date("2019-03-24");
/* returns NaN */
d.w( formatDateTimeToString(date)+"<BR>");
date = new Date("03-24-2019");
/* this fails with NaN*/
d.w( formatDateTimeToString(date)+"<BR>");
【讨论】:
这似乎离题了。虽然问题可能是 OP 如何生成他们的日期,但问题始于一个 Date 对象,所以你/我们真的还不知道。这应该只是一个评论,关于解析已经有很多很多问题了。以上是关于Javascript日期对象,IE和Safari中日期对象的getDate()、getMonth()和getFullYear()的主要内容,如果未能解决你的问题,请参考以下文章
我如何使用 javascript 在 IE7、IE8、Safari 和其他支持的浏览器中播放 .Wav 声音
JavaScript 适用于Safari和IE的可点击表单标签
JavaScript 适用于Safari和IE的可点击表单标签 - 原型版
Javascript 适用于 FF / IE 但不适用于 Chrome / Safari