这个javascript日期功能会失败吗?

时间:2014-08-25 21:05:53

标签: javascript date

记住DST,Leaps,Timezones。

这个功能可以搞砸了吗?它必须采用unix纪元(GMT)并找出该纪元的确切日历日,并在当天中午12:00返回纪元。

function convertToDayStartTime(epoch) {
  var d = new Date(0);
  d.setUTCSeconds(epoch);
  var dayStart = new Date(d.toDateString()).getTime()/1000;
  return dayStart;
}

例如:

expect(convertToDayStartTime(1378000800)).toEqual(1377993600);

编辑:

看起来有点搞砸了。测试失败后:

expect(convertToDayStartTime(1377993599)).toEqual(1377907200);

我不确定如何修复。

1 个答案:

答案 0 :(得分:3)

我认为它与浏览器Date的实现完全一样正确。但是,我认为你可以简化它:你知道一天有多长 - 86400秒。所以只需找到86400的最接近的倍数即可。你可以像这样实现它:

function convertToDayStartTime(epoch) {
    return Math.floor(epoch / 86400) * 86400;
}

正如预期的那样,为您的示例提供了1377907200.