【问题标题】:Firefox Defining Date Wrong with new Date().getTime();Firefox 使用 new Date().getTime() 定义日期错误;
【发布时间】:2015-10-09 18:06:59
【问题描述】:

我正在定义一个变量 data.EndTimeUTC,其值为“2015-10-09T18:15:00”

使用 Javascript,我将其转换为毫秒使用...

var liveTime = new Date(data.EndTimeUTC).getTime();

在所有浏览器中,它都给出了正确的答案; 1444414500000 但无论出于何种原因,Firefox 都会给出 1444425300000 ,这正好是 3 小时的休息时间。

有什么想法吗?我很茫然。

【问题讨论】:

  • 时区可能会害死你。
  • 这就是我想知道的——除了我从服务器获取的时间是 GMT 时间——它应该独立于时区运行——所有浏览器都是这种情况,除了火狐。 Firefox 会以某种方式试图解释我们与 GMT 的 3 小时偏移吗?
  • 在浏览器中绝对不是独立的。当您创建时间时,它基于浏览器认为它所在的时区。

标签: javascript jquery date utc


【解决方案1】:

尝试使用:

var liveTime = Date.UTC(2015, 9, 9, 18, 15, 0)

对于您的情况:

var fixedUTC = data.EndTimeUTC + "Z";

var liveTime = Date.parse(fixedUTC);

【讨论】:

  • 好的,所以,这在技术上是可行的。如何从“2015-10-09T18:15:00”到“2015,9,9,18,15,0”?
  • 我确信那里有更优雅的解决方案,但这种蛮力对我有用。我只是希望 javascript 和 .NET 有一天能在日期方面表现得很好。
  • Firefox,有趣的是,在 Date.parse(fixedUTC); 上给了我 NaN;铬很好。我不明白。
  • 改用var fixedUTC = data.EndTimeUTC + 'Z';
【解决方案2】:

T 替换为' ',将- 替换为/,这使得新字符串适用于不同的浏览器。 经过测试,以下代码在 Chrome 和 Firefox 上运行良好:

var date1 = '2015-10-09T18:15:00';
date1 = date1.replace('T', ' ');
var time = new Date(date1.replace(/-/g,'/')).getTime();
alert(time);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    相关资源
    最近更新 更多