vb.net 选项严格将字符串转换为日期
vb.net option strict on convert string to date
我正在尝试将字符串从数据库转换为格式为“yyyy-M-d”的日期类型
字符串以这种格式存储“yyyy-M-d”
所以我可以用这种格式的日期变量执行这段代码“yyyy-M-d”
因为 Option Strict 是 ON Visual Studio 2019 ver 16.7.5 是 UN-happy
If gvTorF = "False" And varToday > varFTue Then
首先我不确定是否有必要,但我读到的关于比较日期的帖子提出了这个建议
这是我的变量
Dim varToday As Date
Dim varFTue As Date
Dim varStr As String
接下来,我单击一个按钮,使用下面的代码从数据库中获取数据
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
varTESTdate = CType(rdr("diTESTdate"), String) 'shows as 2021-10-26
End While
rdr.Close()
End Using
End Using
End Using
End Sub
除了关闭 Option Strict 或仅使用格式“M-d-yyyy”之外 运行 我的测试
varToday > varFTue 似乎有效
问题是我还有哪些其他选项可以将字符串转换为日期?
下面的函数将转换两个字符串 varTESTdate 和 varTodayStr
varTESTdate 来自数据库,varTodayStr 在函数 bothDates
中创建
这是按钮单击事件背后的函数和调用
bothDates(varTESTdate, varTodayStr)
Public Function bothDates(ByVal varTESTdate As String, ByVal varTodayStr As String) As Object
result1 = Date.ParseExact(varTESTdate, "yyyy-M-d", provider:=Nothing)
Dim dateToday = Date.Today
varTodayStr = dateToday.ToString("yyyy-M-d")
result2 = Date.ParseExact(varTodayStr, "yyyy-M-d", provider:=Nothing)
Return (result1, result2)
End Function
您似乎已经在代码中进行了转换
Dim d = DateTime.ParseExact("2026-10-26", "yyyy-M-d", Nothing) 'or provide a culture instead of Nothing..
虽然我不确定尾随的“As IFormatProvider, As Date”是干什么用的
'varFTue = Date.ParseExact(varStr, "yyyy-M-d", provider As IFormatProvider, As Date)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
这是 vb 中此上下文中的语法错误,看起来像是从 C# 转换而来的残余工件,在 C# 中我们使用“as X”执行强制转换。不要假设转换器总是能完美地完成所有代码;您几乎总是必须修复它们的输出,特别是如果只粘贴程序的一部分,它们看不到所有声明的变量(您的代码似乎不包含 provider
作为变量)
我正在尝试将字符串从数据库转换为格式为“yyyy-M-d”的日期类型
字符串以这种格式存储“yyyy-M-d”
所以我可以用这种格式的日期变量执行这段代码“yyyy-M-d”
因为 Option Strict 是 ON Visual Studio 2019 ver 16.7.5 是 UN-happy
If gvTorF = "False" And varToday > varFTue Then
首先我不确定是否有必要,但我读到的关于比较日期的帖子提出了这个建议
这是我的变量
Dim varToday As Date
Dim varFTue As Date
Dim varStr As String
接下来,我单击一个按钮,使用下面的代码从数据库中获取数据
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
varTESTdate = CType(rdr("diTESTdate"), String) 'shows as 2021-10-26
End While
rdr.Close()
End Using
End Using
End Using
End Sub
除了关闭 Option Strict 或仅使用格式“M-d-yyyy”之外 运行 我的测试
varToday > varFTue 似乎有效
问题是我还有哪些其他选项可以将字符串转换为日期?
下面的函数将转换两个字符串 varTESTdate 和 varTodayStr
varTESTdate 来自数据库,varTodayStr 在函数 bothDates
中创建
这是按钮单击事件背后的函数和调用
bothDates(varTESTdate, varTodayStr)
Public Function bothDates(ByVal varTESTdate As String, ByVal varTodayStr As String) As Object
result1 = Date.ParseExact(varTESTdate, "yyyy-M-d", provider:=Nothing)
Dim dateToday = Date.Today
varTodayStr = dateToday.ToString("yyyy-M-d")
result2 = Date.ParseExact(varTodayStr, "yyyy-M-d", provider:=Nothing)
Return (result1, result2)
End Function
您似乎已经在代码中进行了转换
Dim d = DateTime.ParseExact("2026-10-26", "yyyy-M-d", Nothing) 'or provide a culture instead of Nothing..
虽然我不确定尾随的“As IFormatProvider, As Date”是干什么用的
'varFTue = Date.ParseExact(varStr, "yyyy-M-d", provider As IFormatProvider, As Date)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
这是 vb 中此上下文中的语法错误,看起来像是从 C# 转换而来的残余工件,在 C# 中我们使用“as X”执行强制转换。不要假设转换器总是能完美地完成所有代码;您几乎总是必须修复它们的输出,特别是如果只粘贴程序的一部分,它们看不到所有声明的变量(您的代码似乎不包含 provider
作为变量)