【发布时间】:2021-01-19 22:31:29
【问题描述】:
我正在尝试在 vb 上将字符串转换为日期,但由于某种原因,我收到以下错误消息。
System.FormatException: 'String was not recognized as a valid DateTime.'
我正在从 winform 上的日期控件获取日期
dim selectedDate as string = dateControl1.text
dim selectedDt as Date = Date.Parse(selectedDate)
但如果我将相同的值放入代码中而不是从 dateControl 中获取,则可以
dim selectedDate as string = "19/01/2021"
dim selectedDt as Date = Date.Parse(selectedDate)
所以我尝试查看 dateControl1 的值与键入代码时是否有任何不同,因为 dateControl1.text 应该返回相同的字符串值,所以我尝试这样做
dim selectedDate as string = "19/01/2021"
if selectedDate = dateControl1.text then
debug.print ("same")
else
debug.print ("different")
end if
当我运行它时,调试打印“相同”
如果我这样做
dim selectedDate as string = "19/01/2021"
if selectedDate = dateControl1.text then
debug.print ("same")
else
debug.print ("different")
end if
dim selectedDt as Date = Date.Parse(dateControl1.text)
即使调试说“相同”,我也会收到相同的错误
所以我真的很困惑,为什么当我从 dateControl1.text 获取值时 date.parse 显示错误并且它是完全相同的字符串
我错过了什么吗?
感谢您的帮助。
问候
- 哈里斯-
【问题讨论】:
-
当前 CultureInfo 的日期/时间格式是什么?试试
DateTime.TryParse(),提供解析格式。什么是日期控件(什么平台提供的控件)?是不是提供了一个Value属性返回一个Date对象? -
您很可能在标准日期格式为“MM/dd/yyyy”的系统上传递的值只能解释为“dd/MM/yyyy”。您需要使用
ParseExact或TryParseExact并指定确切的格式,或者调用Parse或TryParse并提供一个提供适当日期格式的 IFormatProvider。正如建议的那样,如果您使用的是 WinForms 和DateTimePicker控件,那么您不应该触摸它的Text属性,而是使用Value属性。
标签: vb.net