Показать полную графическую версию : [решено] Подскажите, пожалуйста, программу или батник для подсчета интервала времени
Подскажите, пожалуйста, программу или батник для подсчета интервала времени. Суть такая: если я задаю два момента времени в виде "Год, месяц, число, часы, минуты" и мне нужно определить, сколько лет, месяцев, дней, часов и минут прошло (или пройдет) между моментом 1 и моментом 2?
Pliomera
01-06-2009, 21:40
В принципе можно в excel. Вводим две даты в формате DD:MM:YYYY HH:MM:SS. В результирующей ячейке (разность) устанавливаем формат ячейки типа time HHHH:MM:SS. Остается только с помощью функций рабочего листа преобразовать кол-во часов в количество лет, месяцев и дней.
с помощью функций рабочего листа »Если до остального я ещё как-то дойду, то это совсем непонятно. А может, проще как-то?
Прошу прощения за некорректность поставленной задачи - всё-таки год и месяц в календаре могут иметь разную длину. Поэтому меняю свой запрос: результат должен исчисляться в днях (24 часа), часах и минутах
TomSoyer
02-06-2009, 03:34
В EXCEL-е функции вообще не потребуются. Это простая арифметическая задача.
Например: ячейка А1 - стартовая дата, А2 - конечная дата, В1 - результат (=А2-А1).
Единственное, что от Вас требуется это задать форматы ячеек, а именно ячейки А1 и А2 в формат даты (ДД.ММ.ГГ ч:мм;@) а для ячейки В1 - ([ч]:мм:сс;@). Теперь достаточно ввести даты в ячейки А1 и А2 и получите результат в ячейке В1 в виде ЧАСЫ:МИНУТЫ:СЕКУНДЫ.
Формат ячейки представления результата оставить ДД.ММ.ГГ ч:мм
Делюсь красивым решением (спасибо, подсказали скрипт):date1 = inputbox("Введите дату №1" & vbcrlf & vbcrlf & vbcrlf & _
"Например - 01.01.2009 12:00:00", "Калькулятор разности дат", "01.01.2009 12:00:00")
date2 = inputbox("Введите дату №2" & vbcrlf & vbcrlf & vbcrlf & _
"Например - 05.06.2009 11:06:32", "Калькулятор разности дат", "05.06.2009 11:06:32")
arr = array("yyyy", "m", "d", "h", "n", "s")
arr1 = array("лет = ", "месяцев = ", "дней = ", "часов = ", "минут = ", "секунд = ")
for i = 0 to ubound(arr)
sd = datediff(arr(i), cdate(date1), cdate(date2), 2)
res = res & arr1(i) & sd & vbcrlf
next
msgbox res
Хорошо бы вводить каждую цифру в отдельное окно. Да и время, имхо, лишнее. Хотя - если цель достигнута...
kalendar-eng-rus-v4.exe (http://okshef.narod.ru/Files/kalendar-eng-rus-v4.exe) - посмотри.
okshef, тоже неплохо, только время вводить нельзя. Это ваше изделие или в сети нашли?
Нет, Гугл помог, я если что и наваяю в Excel-e, выложу.
я если что и наваяю »В таком случае не забудьте уточнить, сколько дней у вас подразумевается в месяце и сколько в году, поскольку месяцы и годы имеют разную величину (скорее всего, думаю, в месяце будет подразумеваться 30, а в году - 365). Так ли это в выложенном мною скрипте - я не знаю, ибо его автор от прямого ответа уклонился, сказав: "А что мешает проверить опытным путем?"
Так ли это в выложенном мною скрипте, я не знаю, ибо его автор от прямого ответа уклонился, сказав: "А что мешает проверить опытным путем?" »В скрипте всё правильно, для проверки вводил значения
01.01.2008 - так как 2008 високосный год (366)
01.01.2009 - обычный год (365 дней)
Показало как и должно быть - 366 дней. так же проверял месяцы, при проверке количества дней в феврале прошлого года, показало 29 дней. Так что всё работает правильно. Хороший скрипт. :up:
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.