【问题标题】:Approximating dates - Javascript/JSON近似日期 - Javascript/JSON
【发布时间】:2014-05-15 06:22:45
【问题描述】:

我正在尝试可视化我拥有的一些数据。这是小提琴:http://jsfiddle.net/hohenheim/6R7mu/10/

对于这个可视化,我开始了一小部分我试图可视化的 JSON 数据,data2,看起来像

data2 = [
   {
      "startDate":1396263600.0,
      "adId":2483231759355,
      "endDate":1401101940.0,
      "impressions":754831
   },
   {
      "startDate":1393851600.0,
      "adId":2750329551133,
      "endDate":1404212340.0,
      "impressions":3947368
   }
];

请注意,数据中有一个日期范围。我的目标是将展示次数统一划分为该日期范围内的所有日期,并汇总所有广告每天的所有展示次数。 IE最终结果将只有2个属性:dateimpressions。我有一个应该可以工作的解决方案,但天数不能正确聚合,因为天数的毫秒表示不相等,即使它们可能近似于同一天。例如,1398164400000 和 1398171600000 表示同一天,但具有不同的毫秒值。

基本上,如果您检查图表上区域的中间部分,会注意到存在振荡值,但实际上每对不同的值实际上应该只代表 1 天的总和。

有什么方法可以正确合并近似于同一天的 2 毫秒版本的日期?

【问题讨论】:

  • 减去 (t % (24 * 3600 * 1000)) 应该可以。
  • @MikeSamuel 如果这是您的答案,请将其作为答案发布。
  • 迈克 - 太棒了,这就是我要找的!

标签: javascript json nvd3.js


【解决方案1】:

大多数用于生成时间戳的时钟不包括闰秒,因此您可以通过减法来隔离日部分

(t % (24     /* hours per day */
      * 3600 /* seconds per hour */
      * 1000 /* milliseconds per second */ ))

来自时间戳t

即使时间戳确实包含闰秒,该函数仍然可以为您提供一个很好的日期比较代理。它可能会因为接近午夜的时间戳而变得狡猾。

如果您所在的时区远离日期边界,您可能希望将时间戳调整为自本地时区中的纪元以来的毫秒,而忽略 DST,这又会在午夜前后引入一些不准确性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多