2013-09-30 3 views
0

У меня есть определенное значение продолжительности (endDate - startDate = продолжительность в миллисекундах), мне нужно получить разницу во времени в таком формате:Формула для расчета количества лет/месяцев/дней ... от длинных (миллисекунд)

0 лет 5 месяцев 3 дня ...

Мне нужны математические формулы, которые могут помочь мне извлечь количество лет/месяцев/дней/часов/мин/сек от этой продолжительности.

Я использую XSLT 1.0 и не могу использовать какие-либо функции даты XPath2.0. поэтому мне нужно написать функцию самостоятельно.

+0

Итак, что вы пробовали? Как вы надеетесь определить «месяц»? (например, какая дата 1 месяц после 30 января?) – 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 -readable-форма – 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 дней, но это было бы несколько неточно.

Смежные вопросы