Search the Community
Showing results for tags '_nowcalc'.
-
..didn't want to If @HOUR & ":" & @MIN = "03:00" Then constantly kind of thing. This is simpler. #include <Date.au3> ; Target execution time (24-hour format: "HH:MM:SS") Global $g_sTargetTime = StringTrimLeft(_DateAdd('s', 1, _NowCalc()), 11) ; in 1 sec for this test ; "03:00:00" ; Start initial schedule Adlib_ScheduleNextRunAt(MyDailyTask, $g_sTargetTime) While 1 ;~ If @HOUR & ":" & @MIN = "03:00" Then MyDailyTask() ; replaced by Adlib_ScheduleNextRunAt() Sleep(1000) WEnd Func MyDailyTask() AdlibUnRegister(MyDailyTask) ; --- DO YOUR WORK HERE --- ConsoleWrite("- Task executed at: " & _NowCalc() & "." & @MSEC & @CRLF) ; -------------------------- ; Recalculate and re-arm the timer for tomorrow's target time Adlib_ScheduleNextRunAt(MyDailyTask, $g_sTargetTime) EndFunc ;==>MyDailyTask Func Adlib_ScheduleNextRunAt($Func, $sTime) ConsoleWrite('+ Func Adlib_ScheduleNextRunAt(' & (IsFunc($Func) ? FuncName($Func) : String($Func)) & ", " & $sTime & ')' & @CRLF) Local $iMS = Adlib_GetMsUntilNextTime($sTime) AdlibRegister($Func, $iMS) ConsoleWrite("Next run scheduled in " & Round($iMS / 1000 / 60, 1) & " minutes." & @CRLF) EndFunc ;==>Adlib_ScheduleNextRunAt Func Adlib_GetMsUntilNextTime($sTime) Local $sTargetDate, $sNow = _NowCalc() Local $sTodayTarget = @YEAR & "/" & @MON & "/" & @MDAY & " " & $sTime ; If target time today is still in the future, target today; otherwise target tomorrow If _DateDiff('s', $sNow, $sTodayTarget) > 0 Then $sTargetDate = $sTodayTarget Else $sTargetDate = _DateAdd('d', 1, $sTodayTarget) EndIf Local $iDiffMS = _DateDiff('s', $sNow, $sTargetDate) * 1000 ConsoleWrite('+ GetMsUntilNextTime(' & $sTime & ') : ' & $iDiffMS & ' ms.' & @CRLF) Return $iDiffMS EndFunc ;==>Adlib_GetMsUntilNextTime Maybe more of an idea than an example. But a good idea I think
-
Hello to retrieve the "MILLISECONDS" as well I modified some lines from "DATE.AU3". It's working fine, except that the function seems to return the UTC time stamp of the file checked? _NowCalc is returning local time (DST is active right now), so a direct "Age Check" against _NowCalc() is not possible. What's the best / safest approach to convert either UTC to "current local time incuding DST" or vice versa? _Date_Time_GetTimeZoneInformation() ??? #include-once #include <Date.au3> $File="C:\temp\TimeTest.txt" $f=FileOpen($File,2+8) FileWriteLine($f,_NowCalc()) FileClose($f) _NowCalc() $Content=FileRead($File) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Content = ' & $Content & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console $TS=FileGetTSstringLastModifiedWithMS($File) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $TS = ' & $TS & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console Func FileGetTSstringLastModifiedWithMS($_FullFilePathName) $h = _WinAPI_CreateFile($_FullFilePathName, 2, 2) $aTS = _Date_Time_GetFileTime($h) _WinAPI_CloseHandle($h) $aDate = _Date_Time_FileTimeToArray($aTS[2]) If IsArray($aDate) and UBound($aDate) > 6 Then Return StringFormat("%04d/%02d/%02d %02d:%02d:%02d.%03d", $aDate[2], $aDate[0], $aDate[1], $aDate[3], $aDate[4], $aDate[5], $aDate[6]) Else SetError(1) Return EndIf EndFunc ;==>FileGetTSstringLastModifiedWithMS _FileGetTime() is not an option, as I need the milliseconds as well, as files may show up within the same second. <edit> It would be preferred to have a robust solution to use "local time", taking care of DST</edit> Regards, Rudi.
- 1 reply
-
- _date_time_getfiletime
- _nowcalc
-
(and 1 more)
Tagged with:
-
$sMsg = '2017-09-04 18:42:38' _DateDiff ('h', $sMsg , _NowCalc() ) I could not find anything recent, so I thought I would put it here. The '2017-09-04' date is a typical SQL timestamp. The _NowCalc() is a typical AutoIt date calculator. Much to my surprise and delight, _DateDiff works correctly with these two dates without any prior conversion. I am guessing that internally the separating characters (-/) get ignore. Does save on additional code. Skysnake