2011-03-19 52 views
0

我正在使用JS来计算我的日期差异,但我没有得到四舍五入的值请引导我。 公式用来寻找约计金额使用Js计算日期

value1 = todate - fromdate; 
value2 = value1/30; 
value3 = value2 * 5000; 

为了这个,我现在用的是下面的代码

var preioddiff = parseInt(todate) - parseInt(fromdate); 
var dividen = preioddiff/30; 
var totappamt = dividen * parseInt(5000); 

,但它并没有给出正确的答案

例如从日期是04012011,并日期是04022011如果我减去使用parseInt(todate) - parseInt(fromdate)的值;它返回值13303380代替0001000

+0

是todate和fromdate字符串,还是它们是Date对象?如果您执行'alert(parseInt(todate))',会显示什么?另外,你不期待preioddiff是10000,而不是1000? – 2011-03-19 06:45:46

+0

如果您从一个Date对象中减去另一个Date对象,您可能会以毫秒为单位获得它们之间的差异。 – 2011-03-19 06:50:37

+0

切勿使用没有第二个参数的parseInt(通常为10)。如果你这样做,任何以“0”开头的字符串将被解释为八进制。这造成了很难找到的晦涩的错误。虽然在这种情况下,您的parseInt调用是完全不必要的,因为您的参数已经是数字。 – 2011-03-19 07:42:33

回答

0

您可能必须指定基数,这样的:

var res = parseInt('04022011', 10) - parseInt('04012011', 10); 
1

请解释一下你的逻辑,米娜。

从我看到的,你的出发点是错误的。

不能将格式为“MMDDYYYY”形式的日期格式视为日期,除非这两个日期在同一个月份,否则希望能够减去它们以进行日期计算。在这种情况下,只需要处理日子而忽略年月。

您的情况:04022011 - 04012011 == 0001000(应该不就是00010000 - 末注意额外的零?)

关于什么:04012011 - 03312011 - 把它们当作数字,你会得到00700000,但它应该与上面相同,因为这两个日期仅相隔一天。

+0

好评!不应该是答案。为了解决这个问题,你应该向OP解释如何将这些字符串解析成可以比较的日期。只是指出日期字符串不能比较应通过评论。 – 2011-03-19 06:58:09

+0

我甚至不知道米娜的出发点是什么,我怎么能说米娜应该这样或那样做呢?所有Meena都展示了第3幕剧集的第2幕以及第1和3剧集的摘要。 – 2011-03-19 07:07:19

+0

很明显,她在MMDDYYY中的日期为字符串,并且想知道日期之间的差异,她只是没有考虑它正确的方式 – 2011-03-19 07:11:39

0

这不是很清楚你想要做什么,但在这里是你如何能得到两个JavaScript Date对象之间的天数:

var d1 = new Date('March 1'); 
var d2 = new Date('March 19'); 
var days_diff = Math.round((d2 - d1)/86400000); 
alert(days_diff); // output is 18 

当你减去另一个日期,你会得到它们之间的毫秒数。请注意,并非所有天都具有相同的毫秒数(由于夏令时),显然,月有不同的天数,因此以这种方式进行日期计算有其风险。

0

如果使用parseInt来分析可能与“0”开始日期字符串,总是装入一个秒参数指定一个基数(一般为10)。

您传递给parseInt的字符串将被解释为八进制如果它以零开头,这就是您所拥有的。你永远不会以这种方式获得正确的结果。