2011-05-27 76 views
0

我在尝试过滤两个日期之间的列表时出现问题。我有一个解决方案在我们的本地机器.NET 3.5上运行。解决方案运行良好,没有任何错误。但是,当我把它放在我们的服务器上(2008)时,我得到了服务器上日期和时间格式的问题

System.FormatException:String未被识别为有效的DateTime。

如果将机器日期/时间格式从英语(英国)更改为英语(美国),我可以在本地重新创建问题。

问题是我已经将服务器设置为与本地解决方案完全相同,我仍然收到错误。

所涉及的代码是

public DateTime StartDate 
    { 
     get 
     { 
      if (this.ViewState["StartDate"] != null) 
      { 
       return DateTime.Parse(this.ViewState["StartDate"].ToString());  
      } 
      else { return DateTime.Today.AddYears(-1); } 
     } 
     private set 
     { 
      this.ViewState["StartDate"] = value.ToString(); 
     } 
    } 

    public DateTime EndDate 
    { 
     get 
     { 
      if (this.ViewState["EndDate"] != null) 
      { 
       return DateTime.Parse(this.ViewState["EndDate"].ToString()); 
      } 
      else { return DateTime.Today; } 
     } 
     private set 
     { 
      this.ViewState["EndDate"] = value.ToString(); 
     } 
    } 

请帮帮忙!

回答

1

使用ParseExact。这将允许您指定日期格式,而不考虑计算机的区域设置。

很多关于堆栈溢出的问题。

.NET Parsing string into DateTime

+2

+1。这就是我的意思! D'哦! – 2011-05-27 10:53:47

+0

嗨保罗谢谢你。我是企业主,所以我会将其传递给我们的开发人员。 – 2011-05-27 10:59:22