WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

Time UDFs

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

IsDate UDF

Keywords:   IsDate Is Date  Time IsTime UDF TimeAdd ObjectType VT_Date OLEAUT udfIsWBDate udfIsOLEDate

Question:

Does Winbatch have a IsDate equivalent which would tell me if the date input is valid or not? I see isNumber, isFloat, etc., but not isDate.

Answer:

Here are some udfIsWBDate UDF that should do it, or at least get you on the right track, depending on your definition of "Date".

WinBatch Format

; Check if a valid WinBatch Date format YYYY:MM:DD
#DefineFunction udfIsWBDate(d)
   ErrorMode(@OFF)
   b=TimeAdd(d,"0000:00:00:00:00:01")
   ErrorMode(@CANCEL)
   If b==0 Then Return 0
   Return 1
#EndFunction

a="2002:01:01:01:01:01"
Message(a,udfIsWBDate(a))

a="2002:01:00:01:01:01"
Message(a,udfIsWBDate(a))

a="2002:01:01:01:01:01:01:01"
Message(a,udfIsWBDate(a))

a="apples"
Message(a,udfIsWBDate(a))


OLE Format

VALID RANGE: 657435 (01/01/0100) and strictly less than 2958466.0 (01/01/10000).
#DefineFunction udfIsOLEDate(d)
   ; VT_DATE OLEAUT DATE
   ; VALID RANGE: 657435 (01/01/0100) and strictly less than 2958466.0 (01/01/10000).
   ErrorMode(@OFF)
   b=ObjectType("DATE",d)
   ErrorMode(@CANCEL)
   If b==0 Then Return 0
   Return 1
#EndFunction


;***************************************************************************
;**
;**           VALID DATES
;**
;***************************************************************************


sample="01/01/0100"  ; Earliest Date MM/DD/YYYY
Message(sample,udfIsOLEDate(sample))

sample="01/01/9999"  ; Latest Date     MM/DD/YYYY
Message(sample,udfIsOLEDate(sample))

sample="100/01/01"  ; Earliest Date (Reversed)  YYYY/MM/DD
Message(sample,udfIsOLEDate(sample))

sample="9999/01/01"  ; Latest Date (Reversed)  YYYY/MM/DD
Message(sample,udfIsOLEDate(sample))

sample=657435  ; Earliest Date (Double)
Message(sample,udfIsOLEDate(sample))

sample=2958465.9  ; Latest Date (Double)
Message(sample,udfIsOLEDate(sample))

sample="01-01-0100"  ; Earliest Date MM-DD-YYYY
Message(sample,udfIsOLEDate(sample))

sample="01-01-9999"  ; Latest Date MM-DD-YYYY
Message(sample,udfIsOLEDate(sample))

sample="0100:01:01"  ; Earliest Date YYYY:MM:DD
Message(sample,udfIsOLEDate(sample))

sample="9999:01:01"  ; Latest Date YYYY:MM:DD
Message(sample,udfIsOLEDate(sample))


;***************************************************************************
;**
;**           INVALID DATES
;**
;***************************************************************************

sample="01:01:0100"  ; Earliest Date MM:DD:YYYY  / Fails because it considered an invalid date format
Message(sample,udfIsOLEDate(sample))

sample="01:01:9999"  ; Latest Date MM:DD:YYYY  / Fails because it considered an invalid date format
Message(sample,udfIsOLEDate(sample))

sample="10000:01:01" ; Latest Date YYYY:MM:DD / Fails because it must be strictly less than 2958466.0 (01/01/10000)
Message(sample,udfIsOLEDate(sample))

sample="00/01/9999"  ; Invalid Month MM/DD/YYYY  / Fails because it contains an invalid month.
Message(sample,udfIsOLEDate(sample))

sample="02/30/9999"  ; Invalid Day MM/DD/YYYY  / Fails because it contains an invalid date.
Message(sample,udfIsOLEDate(sample))
Exit

Article ID:   W15770
File Created: 2012:10:24:07:51:18
Last Updated: 2012:10:24:07:51:18