Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.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 格式异常字符串未被识别为有效的日期时间_Asp.net_C# 4.0_Datetime Format - Fatal编程技术网

Asp.net 格式异常字符串未被识别为有效的日期时间

Asp.net 格式异常字符串未被识别为有效的日期时间,asp.net,c#-4.0,datetime-format,Asp.net,C# 4.0,Datetime Format,其中txtTourStartDate.Text=“16/08/2012” 我已经搜索并阅读了所有与此相关的帖子。这就足够了: objTour.tourStartDate = Convert.ToDateTime( DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", null) .ToString("MM/dd/yyyy")); 在a中,/表示区域性特定的日期分隔符,而不是文字字符/。

其中
txtTourStartDate.Text=“16/08/2012”

我已经搜索并阅读了所有与此相关的帖子。

这就足够了:

objTour.tourStartDate = 
    Convert.ToDateTime(
        DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", null)
            .ToString("MM/dd/yyyy"));
在a中,
/
表示区域性特定的日期分隔符,而不是文字字符
/
。因此,代码的结果取决于用户(或服务器)的本地化设置

要使代码独立于特定于区域性的设置,您有两个选项:

  • 明确指定使用斜杠作为日期分隔符的区域性,例如

    objTour.tourStartDate = DateTime.ParseExact(txtTourStartDate.Text, 
                                                "dd/MM/yyyy", 
                                                CultureInfo.InvariantCulture);
    
  • 或者转义角色,例如

    DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", 
                        CultureInfo.InvariantCulture)
    
    (注意
    @
    \


这两种方法都会产生期望的结果。

您的原始代码可以工作,尽管您正在进行大量不必要的转换。(DateTime->ToString->ToDateTime),真正的问题是
InvariantCulture
。由于您正在为
CultureInfo
传递
null
,请尝试
CultureInfo.InvariantCulture

您的原始代码:

DateTime.ParseExact(txtTourStartDate.Text, @"dd\/MM\/yyyy", null)
更好的办法是:

objTour.tourStartDate = 
    Convert.ToDateTime(
        DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture)
            .ToString("MM/dd/yyyy"));

天哪,我刚刚意识到那个家伙在做什么(解析->ToString->ToDateTime)。当然,你是对的,+1。无论如何,我将把我的答案保留在这里,因为不逃脱是他做错的另一件事。当我看到这个问题时,我真的很想知道他是怎么做到的。
objTour.tourStartDate =
DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture)