【发布时间】:2017-03-14 10:04:43
【问题描述】:
我似乎不明白为什么我的代码中出现DateTime 错误?
传递字符串时出现的错误是
从字符串“dd/MM/yyyy :00”到类型“日期”的转换无效
我正在执行如下所示的日期和时间解析
If IsDate(dateEnd) Then
dateStartTime = If(IsTime(dateEndTime), dateEndTime, "00:00")
blog.DateEnd = String.Format("{0} {1}:00", dateEnd, dateEndTime)
Else
blog.DateEnd = Nothing
End If
日期Date.TryParseExact
Private Function IsDate(ByVal dateString As String) As Boolean
Dim output As Boolean = False
Dim dateFormat As String = "dd/MM/yyyy"
If Date.TryParseExact(dateString.Trim, dateFormat, New CultureInfo("en-GB"), DateTimeStyles.None, Nothing) Then
output = True
End If
Return output
End Function
时间解析
Private Function IsTime(ByVal timeString As String) As Boolean
Dim timeRegex As New Regex("([0-1]\d|2[0-3]):([0-5]\d)")
Return timeRegex.IsMatch(timeString)
End Function
它通过了所有的检查,然后产生了这条线的错误
blog.DateEnd = String.Format("{0} {1}:00", dateEnd, dateEndTime)
传入的字符串例如是13/03/2017 :00,具体取决于选择的日期。
有什么建议吗?
【问题讨论】:
-
你的标题只是从特定格式的字符串转换而来的,所以在细节上你应该只指定那个(const)字符串,太多的非相关代码。
-
嗨@LeiYang 传递的字符串如下
13/03/2017 :00取决于您选择的日期 -
您的日期格式很奇怪,因此自动转换无法处理将字符串转换为日期的问题。你必须再次准确地解析它
-
一切都与文化有关 - 不同的文化 => 不同的日期时间格式
-
我成功了 C#:
DateTime.TryParseExact("13/03/2017 :00", "dd/MM/yyyy :HH", new CultureInfo("en-US"), DateTimeStyles.None, out dt);
标签: asp.net vb.net date datetime