Asp.net 为什么这个DateTime.ParseExact语句不起作用?
以下行给出了一个“字符串未被有效日期时间识别”错误: 我在stackoverflow上得到了这个“有效”的例子,但它对我不起作用:我也不知道为什么 编辑(重新编辑,我错误地键入了最后两次尝试错误): 还是不行。这是我在尝试了目前为止提交的所有建议后发现的(谢谢大家)。更多信息,日期字符串来自文本框控件Asp.net 为什么这个DateTime.ParseExact语句不起作用?,asp.net,.net,vb.net,Asp.net,.net,Vb.net,以下行给出了一个“字符串未被有效日期时间识别”错误: 我在stackoverflow上得到了这个“有效”的例子,但它对我不起作用:我也不知道为什么 编辑(重新编辑,我错误地键入了最后两次尝试错误): 还是不行。这是我在尝试了目前为止提交的所有建议后发现的(谢谢大家)。更多信息,日期字符串来自文本框控件 Dim xxx As String = "4/6/2016" 'OR = "04/06/2016" as necessary for the sample 这不起作用: DateTi
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.ParseExact(xxx, "M/d/yyyy", CultureInfo.InvariantCulture)
DateTime.ParseExact(xxx, "MM/dd/yyyy", CultureInfo.InvariantCulture)
之后,我用DateTime尝试了一些更简单的方法。解析:
DateTime.ParseExact(xxx)
这是我亲手打出来的。我没有使用textbox控件中的值,它确实有效:
DateTime.Parse("4/6/2016")
因此,令人沮丧的是,您的格式显示您的日期和月份有两位数字。您的实际值只有一个数字 您有两个选择:
- 遵循您指定的格式,例如2016年6月4日
- 更改格式以匹配值,例如
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
当您使用
dd
或MM
时,它需要一个两位数的数字,因此您需要使用“04/06/2016”
,或者用其单位数版本的d
和M替换它们,如果您尝试这种方式:DateTime.ParseExact(“04/06/2016”,“dd/MM/yyyyy”,无任何内容)
…结论:文本框中的值不是手动输入的值-使用调试器查看使用的值。例如,你确定它是M/d/yyyy而不是d/M/yyyy吗?@CarlosMendieta:DateTime.ParseExact(xxx,“M/d/yyyy”,CultureInfo.InvariantCulture)
对我来说很好。你说的“不起作用”到底是什么意思?理想情况下,展示一个演示问题的示例。听起来你的文本框可能没有你想象中的字符串…@CarlosMendieta:我现在包含了一个简短但完整的程序,只需复制和粘贴你声称不起作用的代码,并将它们放入Main
方法中。它很好用。听起来不适合你的东西并不是你表现出来的东西。