Home > Net >  vb.net option strict on convert string to date
vb.net option strict on convert string to date

Time:10-09

I am trying to convert a string from a database to a Date type with this format "yyyy-M-d"
The string is stored in this format "yyyy-M-d"
So I can execute this code with the Date variables in this format "yyyy-M-d"
Because Option Strict is ON Visual Studio 2019 ver 16.7.5 is UN-happy

If gvTorF = "False" And varToday > varFTue Then

First I am not sure it is necessary but the posts I read about comparing Dates makes this suggestion
Here are my variables

Dim varToday As Date
Dim varFTue As Date
Dim varStr As String

Next I click a Button to get the data from the Database With this code below

Public Sub GetDateInfo()
    Using conn As New SQLiteConnection($"Data Source = '{gv_dbName}';Version=3;")
        conn.Open()
        Using cmd As SQLiteCommand = New SQLiteCommand($"SELECT * FROM DateInfoTable WHERE DID = '1'", conn)
            Using rdr As SQLite.SQLiteDataReader = cmd.ExecuteReader
                While rdr.Read()
                    varTorF = rdr("ditORf").ToString
                    'varFTue = CDate(rdr("diTESTdate")) 'shows as 10/26/2021
                    'varFTue = Date.ParseExact(varStr, "yyyy-M-d", provider As IFormatProvider, As Date)
                    'Tried line of code above this can NOT format correct 
                    varStr = CType(rdr("diTESTdate"), String) 'shows as 2021-10-26
                End While
                rdr.Close()
            End Using
        End Using
    End Using
End Sub

Other than turning Option Strict OFF or just use the format "M-d-yyyy" to run my test
Where varToday > varFTue which seems to work
The Question is what are my other options to make the conversion from String to Date?

CodePudding user response:

You appear to have the conversion in your code already

Dim d = DateTime.ParseExact("2026-10-26", "yyyy-M-d", Nothing) 'or provide a culture instead of Nothing..

Though I'm not sure what the trailing "As IFormatProvider, As Date" is there for

    'varFTue = Date.ParseExact(varStr, "yyyy-M-d", provider As IFormatProvider, As Date)
                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

This is a syntax error in this context in vb, and looks like a remnant artifact of a conversion from C# where we use "as X" to perform casts. Don't assume that converters get all code perfect all the time; you nearly always have to fix up their output, especially if pasting in only parts of a program where they can't see all the declared variables (your code appears to not contain provider as a variable)

  • Related