vb.net如何从字符串解析为DateTime

时间:2019-04-04 14:12:01

标签: vb.net casting

在VB.net表单上,我有一个名为DatePicker的{​​{1}}字段和一个名为PostDateTxt的{​​{1}}的文本框。我目前正在从表单中读取值,并将它们存储在变量中,其中Time以dd / mm / yyyy格式保存String日期值,而thetime则以格式保存String时间值时:分。它们被存储为字符串,因为这是它们在文本框中的格式,从中可以获取它们的值。

当我单击表单上的“更新”按钮时,我正在更新数据库中特定项目的日期和时间值。单击“更新”按钮时调用的函数是:

fullPostDate

我现在想将这些值转换回DateTime对象,并尝试使用以下行将字符串解析回DateTime:

postTime

但是,当我逐步执行代码时,执行上述行后,会收到一条Protected Sub UpdateButton_Click(sender As Object, e As EventArgs) Handles UpdateButton.Click If Page.IsPostBack Then ... Dim mypostdate As String = HttpUtility.HtmlEncode(PostDateTxt.Text & " " & theTime.Text) ... 'Split the mypostdate variable into separate String variables for date & time Dim postDate As DateTime = HttpUtility.HtmlDecode(fullPostDate) ... ... End Sub 消息,内容为:

  

System.InvalidCastException:'从字符串“ 03/29/3019”到“日期”类型的转换无效'

这是为什么?如何将String值转换为Dim postDate As DateTime = HttpUtility.HtmlDecode(fullPostDate 对象?

2 个答案:

答案 0 :(得分:1)

您正在尝试将String对象直接转换为DateTime对象,这是不可能直接执行的,因为它们不共享允许它们这样做的类层次结构。

您应该尝试将String解析为DateTime对象,并为解析器指定一种用于处理字符串的日期格式。

例如 zh-CN的5/7/19是2019年7月5日,在en-US是2019年5月7日

DateTime.Parse(MyString, MyCultureInfo)

您的MyCultureInfo与您希望输入的日期字符串的格式匹配。 例如

MyCultureInfo = new CultureInfo("en-US")

ref https://docs.microsoft.com/en-us/dotnet/standard/base-types/parsing-datetime

答案 1 :(得分:0)

尝试使用DateTime.ParseExact。请注意,该空格是格式字符串和该月份的国会大厦MM的一部分。小写m表示分钟。我确定这是一个错字,但3019年可能超出范围。 :-)

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Dim dateString As String = "01/12/2019 05:22" '
    Dim d As DateTime = DateTime.ParseExact(dateString, "dd/MM/yyyy hh:mm", CultureInfo.CurrentCulture)
    Debug.Print(d.ToString)
    'Prints 12/1/2019 5:22:00 AM
End Sub