Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 为什么这个DateTime.ParseExact语句不起作用?_Asp.net_.net_Vb.net - Fatal编程技术网

Asp.net 为什么这个DateTime.ParseExact语句不起作用?

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

以下行给出了一个“字符串未被有效日期时间识别”错误:

我在stackoverflow上得到了这个“有效”的例子,但它对我不起作用:我也不知道为什么

编辑(重新编辑,我错误地键入了最后两次尝试错误): 还是不行。这是我在尝试了目前为止提交的所有建议后发现的(谢谢大家)。更多信息,日期字符串来自文本框控件

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
方法中。它很好用。听起来不适合你的东西并不是你表现出来的东西。