【问题标题】:Javascript gettime()Javascript 获取时间()
【发布时间】:2014-07-14 10:23:28
【问题描述】:

我正在尝试使用 gettime 对日期字符串进行排序。但它返回了一些模糊的值,例如。

  1. 1428303000000 16/06/2014 16:50
  2. 1389074040000 01/07/2014 16:54

第一个日期小于第二个,所以它没有。毫秒数也应该更小。

您也可以在http://www.tutorialspoint.com/cgi-binpractice.cgi?file=javascript_178上查看

所以不知道为什么会这样。

有什么帮助吗?

【问题讨论】:

标签: javascript gettime


【解决方案1】:

如果您正确创建 Date 对象,请测试您的代码

// new Date(year, month, day, hour, minute, second, millisecond);

// Working with date 16/06/2014 16:50
var foo = new Date(2014, 6, 16, 16, 50);
foo.getTime(); // 1405518600000

// Working with date 01/07/2014 16:54 
var foo = new Date(2014, 7, 1, 16, 54);
foo.getTime(); // 1406901240000

阅读更多关于Date object reference的信息。

在我们看到您的代码以及您如何从“16/06/2014 16:50”到“1428303000000”之前,我无能为力。

【讨论】:

  • 我像
  • 是的,它不是那样工作的。很高兴我帮助你自己理解了你的错误。
【解决方案2】:

您可能正在使用 16/06/2014 创建日期,并打算将其表示为第 6 个月的第 16 天。但是,这不是它的解析方式。 first 元素被视为月份;第二个元素是天。由于一年没有 16 个月,因此将日期四舍五入到下一年(即 2014 年的第 16 个月是 2015 年的第 4 个月)。

换句话说:

Date.parse("16/06/2014 16:50") === Date.parse("04/06/2015 16:50"); // => true

【讨论】:

  • 底线:不要使用 Date.parse。 OP 最终得到一个依赖于实现的结果(如果浏览器认为这是第 16 个月,他们可能应该返回 NaN,因为它是一个无效的日期)。
  • 好吧,当然不要以不受支持的格式给出日期。
  • 问题在于 Date.parse 使用了一种标准化格式,这不是 OP 使用的格式,也不是所有使用中的浏览器都一致支持的格式。有些根本不支持标准化格式。 :-(
  • 不过,您对特定于实现的行为绝对是正确的。例如,这里解释了 Firefox 的行为:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
猜你喜欢
  • 2015-07-13
  • 1970-01-01
  • 2017-11-03
  • 1970-01-01
  • 2016-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多