Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Хочу все знать (http://forum.oszone.net/forumdisplay.php?f=23)
-   -   [решено] Подскажите, пожалуйста, программу или батник для подсчета интервала времени (http://forum.oszone.net/showthread.php?t=141596)

truvo 01-06-2009 18:43 1132453

Подскажите, пожалуйста, программу или батник для подсчета интервала времени
 
Подскажите, пожалуйста, программу или батник для подсчета интервала времени. Суть такая: если я задаю два момента времени в виде "Год, месяц, число, часы, минуты" и мне нужно определить, сколько лет, месяцев, дней, часов и минут прошло (или пройдет) между моментом 1 и моментом 2?

Pliomera 01-06-2009 21:40 1132574

В принципе можно в excel. Вводим две даты в формате DD:MM:YYYY HH:MM:SS. В результирующей ячейке (разность) устанавливаем формат ячейки типа time HHHH:MM:SS. Остается только с помощью функций рабочего листа преобразовать кол-во часов в количество лет, месяцев и дней.

truvo 01-06-2009 23:13 1132631

Цитата:

Цитата Pliomera
с помощью функций рабочего листа »

Если до остального я ещё как-то дойду, то это совсем непонятно. А может, проще как-то?

Прошу прощения за некорректность поставленной задачи - всё-таки год и месяц в календаре могут иметь разную длину. Поэтому меняю свой запрос: результат должен исчисляться в днях (24 часа), часах и минутах

TomSoyer 02-06-2009 03:34 1132728

В EXCEL-е функции вообще не потребуются. Это простая арифметическая задача.
Например: ячейка А1 - стартовая дата, А2 - конечная дата, В1 - результат (=А2-А1).
Единственное, что от Вас требуется это задать форматы ячеек, а именно ячейки А1 и А2 в формат даты (ДД.ММ.ГГ ч:мм;@) а для ячейки В1 - ([ч]:мм:сс;@). Теперь достаточно ввести даты в ячейки А1 и А2 и получите результат в ячейке В1 в виде ЧАСЫ:МИНУТЫ:СЕКУНДЫ.

okshef 02-06-2009 06:40 1132752

Формат ячейки представления результата оставить ДД.ММ.ГГ ч:мм

truvo 09-06-2009 03:17 1138870

Делюсь красивым решением (спасибо, подсказали скрипт):
Код:

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


okshef 09-06-2009 08:15 1138907

Хорошо бы вводить каждую цифру в отдельное окно. Да и время, имхо, лишнее. Хотя - если цель достигнута...
kalendar-eng-rus-v4.exe - посмотри.

truvo 09-06-2009 14:57 1139170

okshef, тоже неплохо, только время вводить нельзя. Это ваше изделие или в сети нашли?

okshef 09-06-2009 20:23 1139402

Нет, Гугл помог, я если что и наваяю в Excel-e, выложу.

truvo 10-06-2009 01:40 1139678

Цитата:

Цитата okshef
я если что и наваяю »

В таком случае не забудьте уточнить, сколько дней у вас подразумевается в месяце и сколько в году, поскольку месяцы и годы имеют разную величину (скорее всего, думаю, в месяце будет подразумеваться 30, а в году - 365). Так ли это в выложенном мною скрипте - я не знаю, ибо его автор от прямого ответа уклонился, сказав: "А что мешает проверить опытным путем?"

Drongo 10-06-2009 11:01 1139890

Цитата:

Цитата truvo
Так ли это в выложенном мною скрипте, я не знаю, ибо его автор от прямого ответа уклонился, сказав: "А что мешает проверить опытным путем?" »

В скрипте всё правильно, для проверки вводил значения
01.01.2008 - так как 2008 високосный год (366)
01.01.2009 - обычный год (365 дней)
Показало как и должно быть - 366 дней. так же проверял месяцы, при проверке количества дней в феврале прошлого года, показало 29 дней. Так что всё работает правильно. Хороший скрипт. :up:


Время: 14:04.

Время: 14:04.
© OSzone.net 2001-