![]() |
Testing for <Incorrect Dates
I have somedates in this text/label format (yyyy-mm-dd) i.e. not numbers,
2007-02-01 2007-01-33 2007-02-01 I want to test for valid dates. The basic approach I was using was this: Sub foo() Dim sDateStr As String sDateStr = "2007-01-33" Debug.Print DateSerial(Left(sDateStr, 4), Mid(sDateStr, 6, 2), Right(sDateStr, 2)) Debug.Print IsDate(DateSerial(Left(sDateStr, 4), Mid(sDateStr, 6, 2), Right(sDateStr, 2))) End Sub But pseudo-dates such as 33rd January 2007 (see second entry) get interpreted as 2nd February 2007 and *pass* the test. What is the best way of testing for such pseudo-dates, please? Thanks in advance Tim |
Testing for <Incorrect Dates
I have somedates in this text/label format (yyyy-mm-dd) i.e. not numbers,
2007-02-01 2007-01-33 2007-02-01 I want to test for valid dates. The basic approach I was using was this: Sub foo() Dim sDateStr As String sDateStr = "2007-01-33" Debug.Print DateSerial(Left(sDateStr, 4), Mid(sDateStr, 6, 2), Right(sDateStr, 2)) Debug.Print IsDate(DateSerial(Left(sDateStr, 4), Mid(sDateStr, 6, 2), Right(sDateStr, 2))) End Sub But pseudo-dates such as 33rd January 2007 (see second entry) get interpreted as 2nd February 2007 and *pass* the test. What is the best way of testing for such pseudo-dates, please? If IsDate(sDateStr) Then ' Date is OK Else ' Date is bogus End If Rick |
Testing for <Incorrect Dates
Hi Rick
thanks - very straightforward. I just wish I had been able to puzzle it out myself! bw Tim "Rick Rothstein (MVP - VB)" wrote in message ... I have somedates in this text/label format (yyyy-mm-dd) i.e. not numbers, 2007-02-01 2007-01-33 2007-02-01 I want to test for valid dates. The basic approach I was using was this: Sub foo() Dim sDateStr As String sDateStr = "2007-01-33" Debug.Print DateSerial(Left(sDateStr, 4), Mid(sDateStr, 6, 2), Right(sDateStr, 2)) Debug.Print IsDate(DateSerial(Left(sDateStr, 4), Mid(sDateStr, 6, 2), Right(sDateStr, 2))) End Sub But pseudo-dates such as 33rd January 2007 (see second entry) get interpreted as 2nd February 2007 and *pass* the test. What is the best way of testing for such pseudo-dates, please? If IsDate(sDateStr) Then ' Date is OK Else ' Date is bogus End If Rick |
Testing for <Incorrect Dates
? isdate("3rd January 2007")
False is that what you meant? I guess I misunderstood your intentions. -- Regards, Tom Ogilvy "Tim Childs" wrote: Hi Rick thanks - very straightforward. I just wish I had been able to puzzle it out myself! bw Tim "Rick Rothstein (MVP - VB)" wrote in message ... I have somedates in this text/label format (yyyy-mm-dd) i.e. not numbers, 2007-02-01 2007-01-33 2007-02-01 I want to test for valid dates. The basic approach I was using was this: Sub foo() Dim sDateStr As String sDateStr = "2007-01-33" Debug.Print DateSerial(Left(sDateStr, 4), Mid(sDateStr, 6, 2), Right(sDateStr, 2)) Debug.Print IsDate(DateSerial(Left(sDateStr, 4), Mid(sDateStr, 6, 2), Right(sDateStr, 2))) End Sub But pseudo-dates such as 33rd January 2007 (see second entry) get interpreted as 2nd February 2007 and *pass* the test. What is the best way of testing for such pseudo-dates, please? If IsDate(sDateStr) Then ' Date is OK Else ' Date is bogus End If Rick |
All times are GMT +1. The time now is 05:36 PM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com