1 (изменено: Vaks_off, 2019-12-23 12:44:36)

Тема: AHK: Операции со временем

Здравствуйте, подскажите пожалуйста как сделать вычитание времени
Я так понял через EnvSub но не могу разобраться как он работает.

+ открыть спойлер
Gui Add, Button, g1 x24 y64 w80 h23, &OK
Gui Add, Button, g2 x24 y128 w80 h23, &OK
Gui Add, Button, g3 x24 y192 w80 h23, &OK
Gui Add, Text, vTime x16 y32 w96 h23 +0x200 +0x1, 0
Gui Add, Text, vTime2 x16 y96 w96 h23 +0x200 +0x1, 0
Gui Add, Text, vRazn x16 y160 w96 h23 +0x200 +0x1, 0


Gui Show, w126 h236, Window
Return

1:
FormatTime, 1, t12, Time
msgbox, %1%
GuiControl,,Time,%1%
Return

2:
FormatTime, 2, t12, Time
msgbox, %2%
GuiControl,,Time2,%2%
return

3:
Razn := Time2 - Time
msgbox, %Razn%
return

2 (изменено: Vaks_off, 2019-12-23 12:44:51)

Re: AHK: Операции со временем

Переделал код, сейчас работает как нужно но как преобразовать это в формат HH:MI:SS

+ открыть спойлер
Gui Add, Button, g1 x24 y64 w80 h23, &OK
Gui Add, Button, g2 x24 y128 w80 h23, &OK
Gui Add, Button, g3 x24 y192 w80 h23, &OK
Gui Add, Text, vTime x16 y32 w96 h23 +0x200 +0x1, 0
Gui Add, Text, vTime2 x16 y96 w96 h23 +0x200 +0x1, 0
Gui Add, Text, vRazn x16 y160 w96 h23 +0x200 +0x1, 0


Gui Show, w126 h236, Window
FormatTime, TimeString, T12, Time

Return

1:
TimeStart := A_Now
GuiControl,,Time,%TimeStart%
msgbox, %TimeStart%
Return

2:
TimeEnd := A_Now
GuiControl,,Time2,%TimeEnd%
msgbox, %TimeEnd%
return

3:
EnvSub, TimeEnd,%TimeStart%
GuiControl,,Razn,%TimeEnd%
MsgBox %TimeEnd% 
return

3

Re: AHK: Операции со временем

Пример:

time1 := "5:42:24"
time2 := "23:30:17"

MsgBox, % TimeDiff(time1, time2)

TimeDiff(time1, time2) {
   time1 := 16010101 . Format("{:02}{:02}{:02}", StrSplit(time1, ":")*)
   time2 := 16010101 . Format("{:02}{:02}{:02}", StrSplit(time2, ":")*)
   if (time2 < time1)
      time2 += 1, d
   time2 -= time1, s
   time := 1601
   time += time2, s
   FormatTime, outTime, % time, HH:mm:ss
   Return outTime
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

4 (изменено: Vaks_off, 2019-12-27 01:34:13)

Re: AHK: Операции со временем

teadrinker, Спасибо!

Может быть когда нибудь кому-то понадобится)

+ открыть спойлер
Gui Add, Button, vBut1 g1 x24 y64 w80 h23, &OK
Gui Add, Button, g2 x24 y128 w80 h23, &OK
Gui Add, Button, g3 x24 y192 w80 h23, &OK
Gui Add, Text, vtime1 x16 y32 w96 h23 +0x200 +0x1, 0
Gui Add, Text, vtime2 x16 y96 w96 h23 +0x200 +0x1, 0
Gui Add, Text, vRazn x16 y160 w96 h23 +0x200 +0x1, 0


Gui Show, w126 h236, Window
FormatTime, TimeString, T12, Time

Return

1:
FormatTime, time1, t12, Time
GuiControl,,time1,%time1%
GuiControl, Disable, But1
Return

2:
FormatTime, time2, t12, Time
GuiControl,,time2,%time2%
return

3:
GuiControl,,Razn,% TimeDiff(time1, time2)
GuiControl, Enable, But1

Return

TimeDiff(time1, time2) {
   time1 := 16010101 . Format("{:02}{:02}{:02}", StrSplit(time1, ":")*)
   time2 := 16010101 . Format("{:02}{:02}{:02}", StrSplit(time2, ":")*)
   if (time2 < time1)
      time2 += 1, d
   time2 -= time1, s
   time := 1601
   time += time2, s
   FormatTime, outTime, % time, HH:mm:ss
   Return outTime
}



GuiEscape:
GuiClose:
    ExitApp

5 (изменено: Vaks_off, 2019-12-27 01:58:59)

Re: AHK: Операции со временем

teadrinker
А если не сложно можете объяснить пожалуйста как мне допустим значение которое получилось перевести в секунды, для последующей работы

Это костыльно или я в правильном направлении мыслю?

time = 02:44:29
RegExMatch(time, "(.*):(.*):(.*)", Out)
sec := Out3 + (Out2 * 60) + (Out1 * 3600)
msgbox, %sec%

6

Re: AHK: Операции со временем

Можно и так.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder