1

Тема: AHK: Как можно проще определить прошло ли 24 часа от заданного времени

Как можно проще чем в данном примере определить прошло ли 24 часа от заданного времени в ini файле?

IniRead, IniYear,    Runlog.ini, Date and Time, Year
IniRead, IniMonth,   Runlog.ini, Date and Time, Month
IniRead, IniDay,     Runlog.ini, Date and Time, Day
IniRead, IniHours,   Runlog.ini, Date and Time, Hours
IniRead, IniMinutes, Runlog.ini, Date and Time, Minutes

if (A_YYYY A_MM A_DD A_Hour A_Min > IniYear IniMonth IniDay IniHours IniMinutes)
{
    Time1 := A_YYYY A_MM A_DD A_Hour A_Min
    Time2 := IniYear IniMonth IniDay IniHours IniMinutes
    if Time1 - Time2 > 1440 ;24 часа = 1440 минут
        MsgBox Прошло более 24 часов
}

Пример ini файла:

[Date and Time]
Year=2015
Month=01
Day=02
Hours=13
Minutes=14

2

Re: AHK: Как можно проще определить прошло ли 24 часа от заданного времени

Так, как вы делаете, времена нельзя вычитать. Должно быть указано, что это именно времена, а не просто числа. Попробуйте вот так, например:


IniRead, IniYear,    Runlog.ini, Date and Time, Year
IniRead, IniMonth,   Runlog.ini, Date and Time, Month
IniRead, IniDay,     Runlog.ini, Date and Time, Day
IniRead, IniHours,   Runlog.ini, Date and Time, Hours
IniRead, IniMinutes, Runlog.ini, Date and Time, Minutes

Time1 := A_Now
Time2 := IniYear IniMonth IniDay IniHours IniMinutes
Time1 -= Time2, Seconds
If( Time1 / 3600 > 24 )
    MsgBox, Прошло больше 24 часов.
Else
    MsgBox, Прошло меньше 24 часов.

3 (изменено: avens, 2015-01-02 21:39:01)

Re: AHK: Как можно проще определить прошло ли 24 часа от заданного времени

Возможно ваш вариант правильней, мне не понятно как он вычисляет и куда деваются секунды из переменной A_Now?
Точнее я не пойму что делает этот кусок кода:

Time1 -= Time2, Seconds

За одно хочу спросить можно ли выполнить эту часть кода в одной строке?

Time1 := A_YYYY A_MM A_DD A_Hour A_Min
Time2 := IniYear IniMonth IniDay IniHours IniMinutes
Time3 := Time1 - Time2

Так не выходит нужный результат:

Time1 := A_YYYY A_MM A_DD A_Hour A_Min - IniYear IniMonth IniDay IniHours IniMinutes

4

Re: AHK: Как можно проще определить прошло ли 24 часа от заданного времени

Секунды никуда не деваются, разница времён вычисляется как раз в секундах. Кусок кода это и делает: преобразует оба "штампа даты и времени" в секунды, вычитает, разницу сохраняет в Time1. Разделив её на количество секунд в часе, получаем количество часов. К штампу Time2 секунды добавляет сам АНК автоматически (00 секунд).

Вычитать по-вашему нельзя, я ведь об этом написал. В справке есть объяснение, как вычитать и складывать времена. Не знаю только, переведена ли эта часть.