Что нового

Время, дата Как вычислить сколько осталось минут до 07:00 либо 19:00 смотря что ближе.

xishnik

Новичок
Сообщения
51
Репутация
0
Как можно создать такую функцию которая будет возвращать сколько минут осталось до конца смены на основе текущего времени, смены по 12 часов, с 7 до 19 и с 19 до 7 день\ночь,
если время в промежутке с 7 до 19, то возвращать минуты до 19,
а если в промежутке с 19 до 7, то возвращать минуты до 7.
Я не могу понять как плюсовать-минусовать нормально время.
с 7 до 19 ещё кое-как могу
Код:
Func _ReTime()
If (@Hour >= 7) and (@Hour < 19) then ;Дневная смена
$chasi = 19 - @Hour
if @MIN > 0 then
$min = 60 - @MIN
$chasi = $chasi-1
$itog = ($chasi*60) + $min
Return $itog
Else
$itog = $chasi*60
Return $itog
EndIf
Else ;Ночная смена
;Тут нехватает кода, либо нужен другой алгоритм, у кого какие идеи
EndIf
EndFunc

Спасибо всем за идеи и поддержку, за каждый пост.
 
Последнее редактирование:

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Попробуйте так :
Код:
#include <Date.au3>

If @HOUR >18 Then
    $NextDate=_DateAdd( 'd',1, _NowCalcDate())
    MsgBox(0,'','До окончания смены в 7:00 осталось '&_DateDiff('n',_NowCalc(),$NextDate&' 07:00:00')&' минут')
Else
    MsgBox(0,'','До окончания смены в 19:00 осталось '&_DateDiff('n',_NowCalc(),_NowCalcDate()&' 19:00:00')&' минут')
EndIf
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
как возможный вариант

Код:
#include <Date.au3>
Local $iH = @HOUR
Local $sGT = _NowTime(4)
Local $aGT = StringSplit($sGT, ':')
Local $hDiff
Local $mDiff = (60 - Number($aGT[2]))
If $mDiff = 60 Then
    $hDiff += 1
    $mDiff = 00
EndIf
If $iH >= 07 And $iH < 19 Then
    $hDiff = (19 - Number($aGT[1]))
    If $mDiff > 0 Then $hDiff -= 1
    MsgBox(64, '', 'До конца смены(19:00) осталось - ' & $hDiff & ' часов ' & $mDiff & ' минут')
ElseIf $iH >= 19 And $iH <= 23 Then
    $hDiff = (24 - Number($aGT[1]))
    If $mDiff > 0 Then $hDiff += 6
    MsgBox(64, '', 'До конца смены(7:00) осталось - ' & $hDiff & ' часов ' & $mDiff & ' минут')
ElseIf $iH >= 00 And $iH <= 07 Then
    If $mDiff = 0 And $iH <= 00 Then
        $hDiff = 7
    ElseIf $mDiff > 0 And $iH <= 07 Then
        $hDiff = (6 - Number($aGT[1]))
    EndIf
    MsgBox(64, '', 'До конца смены(7:00) осталось - ' & $hDiff & ' часов ' & $mDiff & ' минут')
EndIf
 
Верх