繁体   English   中英

格式异常字符串未被识别为有效的DateTime

[英]Format exception String was not recognized as a valid DateTime

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

其中txtTourStartDate.Text="16/08/2012"

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

自定义日期格式字符串中/表示区域性特定的日期分隔符,而不是文字字符/ 因此,代码的结果取决于用户(或服务器)的本地化设置。

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

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

     DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture) 
  • 或逃脱角色,例如

     DateTime.ParseExact(txtTourStartDate.Text, @"dd\\/MM\\/yyyy", null) 

    (请注意@ \\ )。

两者都应产生期望的结果。

这样就足够了:

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

尽管执行了许多不必要的转换,但是原始代码仍然有效。 (DateTime-> ToString-> ToDateTime)真正的问题InvariantCulture 由于您为CultureInfo传递了null ,因此请尝试CultureInfo.InvariantCulture

您的原始代码:

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

更好的是:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM