1

我有以下代码

// code set somewhere else on page
var ad = "2012-08-29";
var dd = "2012-09-03";

//my code
var a = new Date(ad+'T00:00:00');
var d = new Date(dd+'T00:00:00');
var nn = Math.ceil( parseInt(  ( d.getTime()-a.getTime() ) / (1000*60*60*24) ) );

dd应该总是比ad.

nn应该是 和 之间的夜数,所以这个例子中,我应该有一个值 5 (当我测试它时它确实如此)。adddnn

nn正在被跟踪(放入一个 GA 变量和一个 Omniture 变量中),但大约 50% 的时间它没有得到一个值。我们进行了三次检查,并且 100% 排除了跟踪本身没有问题(我们已经检查以确保跟踪实施是正确的,并且 GA 和 Omniture 之间的(缺少)数字是一致的)。

我们正在调查以确保ad并且dd始终是预期的 yyyy-mm-dd 格式,并且这dd始终是比未来更远的日期ad,但假设这是闪亮的,有人能想到这个计算失败的原因吗?

编辑:澄清一下,我不认为这个计算失败了,但在排除它之前我想要第二个(或第三个!)意见。

4

1 回答 1

1

您在最后一行代码中缺少一个结束括号。包括最后的括号,代码运行良好nn = 5,我相信这是预期的结果。

var nn = Math.ceil( parseInt(  ( d.getTime()-a.getTime() ) / (1000*60*60*24) ) );

或者,您可以按照 Bergi 的建议删除 parseInt(它对代码没有影响)。只要确保括号匹配就可以了。

于 2012-08-06T17:56:01.807 回答