3

Nowたとえば、13:00と17:00の間にあるかどうかを確認しようとしています。_Datediff機能(_dateadd()とを使用)は機能しないと思います_NowTimeCalc()

AutoItに欠けているライブラリ関数はありますか?または、とを比較する手動関数を作成する必要が@Hourあり@minますか?

私はこのようなことをしています:

Func CheckTime($sStart, $sEnd)
    $s = StringSplit($sStart, ":")
    $e = StringSplit($sEnd, ":")
    $s[1] = Int($s[1])
    $s[2] = Int($s[2])
    $e[1] = Int($e[1])
    $e[2] = Int($e[2])
    $result = False

    If $s[0] <= 0 And $e <= 0 Then
        ConsoleWrite("Wrong Time Format")
        Exit
    EndIf

    If $s[1] <= @HOUR And $e[1] >= @HOUR Then
        If @HOUR >= $s[1] And @MIN > $s[2] Then
            If @HOUR <= $e[1] And @MIN < $e[2] Then
                $result = True
            EndIf
        EndIf
    EndIf
    Return $result
EndFunc  ; ==>CheckTime

今のところ、開始時間<終了時間の場合は正常に機能しますが、私が探しているのは、手動チェックではなく、いくつかの良い方法です。

4

2 に答える 2

3

標準のユーザー定義関数 (UDF) を使用して、次のようなものを試すことができます。

#region    ;************ Includes ************
#include <Array.au3>
#include <Date.au3>
#endregion    ;************ Includes ************


ConsoleWrite(_timeBetween(@HOUR & ':' & @MIN, '10:05', '12:09'))

Func _timeBetween($cTime, $sTime, $eTime)
    If Not _DateIsValid('2000/01/01 ' & $cTime) Then Return -1
    If Not _DateIsValid('2000/01/01 ' & $sTime) Then Return -2
    If Not _DateIsValid('2000/01/01 ' & $eTime) Then Return -3

    ;~  ConsoleWrite(_DateDiff('s', '2000/01/01 ' & $cTime & ':00', '2000/01/01 ' & $sTime & ':00') & @CRLF)
    ;~  ConsoleWrite(_DateDiff('s', '2000/01/01 ' & $cTime & ':00', '2000/01/01 ' & $eTime & ':00') & @CRLF)

    If _DateDiff('s', '2000/01/01 ' & $cTime & ':00', '2000/01/01 ' & $sTime & ':00') < 0 And _
       _DateDiff('s', '2000/01/01 ' & $cTime & ':00', '2000/01/01 ' & $eTime & ':00') > 0 Then

        Return 1
    Else
        Return 0
    EndIf

EndFunc  ; ==>_timeBetween
于 2013-02-22T13:58:17.783 に答える
1

私のために働くより単純なバージョン - hh:mm 形式で文字列比較を使用するだけです

#include <Date.au3>

Func _timeBetween( $sTime, $eTime)
    Return (_NowTime(4) < $eTime) And (_NowTime(4) > $eTime)
EndFunc  ; ==>_timeBetween


MsgBox(0, "daytime","is day = " & _timeBetween("08:00"."23:00") )
于 2016-07-18T20:24:08.913 に答える