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

safari、edge 和 IE 上的 mouseenter 和 mouseleave

在Safari中解析时,日期显示为null