1

Тема: AHK:конвертация строка->время и операции?

Доброе утро,

Есть метки времени - начала неких событий, и есть длительности этих событий.
Все вида HH:mm:ss, в формате строки.
Можно ли как-то немудрено сложить начала и длительности, дабы получить финалы событий, в том же виде?

2 (изменено: Malcev, 2013-07-02 02:07:40)

Re: AHK:конвертация строка->время и операции?

Можно так:

StartTime = 01:02:59
Duration = 04:58:01

StringSplit, Start, StartTime, :
StringSplit, Dur, Duration, :
if (Start3 + Dur3) >= 60
{
   Start3 -= 60
   Start2 += 1
}
if (Start2 + Dur2) >= 60
{
   Start2 -= 60
   Start1 += 1
}
EndTime3 := Start3 + Dur3
EndTime2 := Start2 + Dur2
EndTime1 := Start1 + Dur1
SetFormat, float, 02.0
Loop, 3
   EndTime%A_Index% += 0.0
msgbox, EndTime = %EndTime1%:%EndTime2%:%EndTime3%
return

3 (изменено: serzh82saratov, 2013-07-03 12:30:48)

Re: AHK:конвертация строка->время и операции?

Malcev пишет:

Можно так:

StartTime = 21:02:59
Duration = 04:58:01

А на таких значениях?




StartTime = 21:02:59
Duration = 04:58:01

Time := A_YYYY A_MM A_DD RegExReplace(StartTime, ":")
StringSplit, Dur, Duration, :
Time += Dur3, S
Time += Dur2, M
Time += Dur1, H
FormatTime, EndTime, % Time, HH:mm:ss

MsgBox % EndTime
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4 (изменено: Malcev, 2013-07-02 18:07:04)

Re: AHK:конвертация строка->время и операции?

Ваш вариант неправильно форматирует время.
Правильней:

FormatTime, Time, % Time, HH:mm:ss

А вот и мой исправленный:

StartTime = 21:02:59
Duration = 48:58:01

StringSplit, Start, StartTime, :
StringSplit, Dur, Duration, :
if (Start3 + Dur3) >= 60
{
   Start3 -=60
   Start2 +=1
}
if (Start2 + Dur2) >= 60
{
   Start2 -=60
   Start1 += 1
}
while (Start1 + Dur1) >= 24
   Start1 -=24
EndTime3 := Start3 + Dur3
EndTime2 := Start2 + Dur2
EndTime1 := Start1 + Dur1
SetFormat, float, 02.0
Loop, 3
   EndTime%A_Index% += 0.0
msgbox, EndTime = %EndTime1%:%EndTime2%:%EndTime3%
return

5

Re: AHK:конвертация строка->время и операции?

Malcev пишет:

А вот и мой исправленный:

А есть смысл городить огород, когда есть встроенные методы обработки времени?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6

Re: AHK:конвертация строка->время и операции?

Можно ещё сократить решение:


StartTime = 21:02:09
Duration = 04:58:01

StringSplit, D, Duration, :
Time := 20010101 RegExReplace(StartTime, ":"), S:=(D1*3600)+(D2*60)+D3
Time += S, S
FormatTime, EndTime, % Time, HH:mm:ss

MsgBox % EndTime
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7 (изменено: Malcev, 2013-07-04 03:51:33)

Re: AHK:конвертация строка->время и операции?

А есть смысл городить огород, когда есть встроенные методы обработки времени?

Нету. Я решал задачу ориентировочно своих знаний.
Конечно ваш способ короче.
Но по большому счету, главное чтобы работало.

8

Re: AHK:конвертация строка->время и операции?

Malcev пишет:

Но по большому счету, главное чтобы работало.

По большому счету, надо вникать в "алгоритм более* правильных решений". Тем паче, что:

ТС пишет:

Можно ли как-то немудрено

А не :

Приведите все способы решения задачи

Malcev
Ваш алгоритм можно расписать на 1 строку кода, с помощью выражения. И это очевидно. Я "раскатал" на 4 строки. Чтобы была универсальность, и можно было (при желании) также получать дату в нужном формате.

---------------------------------

*Указатель, на относительность утверждения. Т.к. наверняка можно сделать ещё проще.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui