2011-03-19 71 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的字符串將被解釋爲八進制如果它以零開頭,這就是您所擁有的。你永遠不會以這種方式獲得正確的結果。