以下行给出了“无法通过有效的DateTime识别字符串”错误:
DateTime.ParseExact("4/6/2016", "dd/MM/yyyy", Nothing)
我在stackoverflow上得到了这个“工作”示例,但它对我不起作用:Parse Exact Sample我无法找出原因。
编辑(reedit,我错误地输入了最后两次尝试错误): 仍然没有好处。这是我在尝试到目前为止提交的所有建议后发现的(感谢所有)。更多信息,日期字符串来自文本框控件。Dim xxx As String = "4/6/2016" 'OR = "04/06/2016" as necessary for the sample
这不起作用:
DateTime.ParseExact(xxx, "M/d/yyyy", CultureInfo.InvariantCulture)
这不起作用:
DateTime.ParseExact(xxx, "MM/dd/yyyy", CultureInfo.InvariantCulture)
之后,我尝试了一些更简单的东西,只有DateTime.Parse:
DateTime.ParseExact(xxx)
我手动输入了这个。我没有使用文本框控件中的值,并且DID可以工作:
DateTime.Parse("4/6/2016")
太令人沮丧了
答案 0 :(得分:6)
您的格式表示您的日期和月份都有两位数字。您的实际值只有一位数。
您有两种选择:
04/06/2016
d/M/yyyy
此外 - 并且单独 - 您作为格式提供者传入Nothing
,这意味着将使用当前文化。您的格式使用/
,这是特定于文化的日期分隔符。如果您当前的文化没有使用/
作为其日期分隔符,那就是另一个问题。如果您有固定格式,则可能需要指定CultureInfo.InvariantCulture
作为格式说明符。
这是一个简短但完整的程序,证明它有效:
Option Strict On
Imports System
Imports System.Globalization
Public Class Test
Shared Sub Main()
Dim xxx As String = "4/6/2016"
Dim result as DateTime = DateTime.ParseExact(xxx, "M/d/yyyy", CultureInfo.InvariantCulture)
Console.WriteLine(result)
End Sub
End Class
答案 1 :(得分:1)
当您使用dd
或MM
时,它需要一个两位数字,因此您需要使用"04/06/2016"
或者将其替换为d
的单位数版本和M
。