2013-09-30 45 views
0

我有一定的持續時間值(endDate - startDate =持續時間以毫秒爲單位),我需要得到這種格式的時間差異:公式計算年數/月/日...從長(毫秒)

0年5個月3天...

我需要的數學公式可以幫助我從中提取年數/月/天/小時/分鐘/秒。

我使用XSLT 1.0,不能使用任何XPath2.0日期函數。所以我需要自己寫這個函數。

+0

好吧,那麼:你有什麼嘗試?你希望如何定義「一個月」? (例如,哪個日期是1月30日之後的1個月?) – nickgrim

+0

我明白了..好吧,我們可以跳過月 – ralph

+0

[http://stackoverflow.com/questions/8211744/convert-milliseconds-or-seconds-into-human-readable - 形式] [1] 提供了答案,而不計算本月 [1]:http://stackoverflow.com/questions/8211744/convert-milliseconds-or-seconds-into-human可讀的形式 – ralph

回答

1

迴歸日子很簡單。

tmp = time in milliseconds 
milliseconds = tmp mod 1000 
tmp = floor(tmp/1000) 
seconds = tmp mod 60 
tmp = floor(tmp/60) 
minutes = tmp mod 60 
tmp = floor(tmp/60) 
hours = tmp mod 24 
tmp = floor(tmp/24) 
days = tmp 

這是寫在你多次分配給同一個變量的一種方式,但你也可以制定這樣一個步驟的每個:

milliseconds = time mod 1000 
seconds = floor(tmp/1000) mod 60 
minutes = floor(tmp/60000) mod 60 
hours = floor(tmp/3600000) mod 24 
days = floor(tmp/86400000) 

如果你想去個月,你必須處理不同的月份長度。多年來一樣。你可以假設365天的一年,但這會有些不準確。