2012-02-27 150 views
0

我想计算表单日期和两个日期之间的日期差异。如果日期差异为正数,则使用时间跨度计算两个日期之间的差异意味着它输入另一个过程落差意味着它返回错误消息。两个日期之间的日期差异

我的部分码是这里..

TimeSpan span = Convert.ToDateTime(txtenddate.Text).Subtract(Convert.ToDateTime(txtstartdate.Text)); 
     int formatted = span.Days; 
     if (formatted < 1) 
     { 
      ScriptManager.RegisterStartupScript(this, this.GetType(), "temp", "<script language='javascript'>alert('Invalid date difference ');</script>", false); 
     } 

在上面的代码输入是结束日期:30-01-2004开始日期:2002年1月2日

但它返回错误消息:字符串未被识别为有效的日期时间。

请给我一个解决方案与出改变日期格式来解决这个...

+1

尝试使用'DateTime.ParseExact',而不是'Convert.ToDateTime' – V4Vendetta 2012-02-27 05:47:51

回答

2

你应该使用ParseExact获取相关DateTime

TimeSpan ts = DateTime.ParseExact("30-01-2004", "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture) 
        - DateTime.ParseExact("01-02-2002", "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture); 

在使用Convert.ToDateTime它调用DateTime.Parse将尝试它在这种情况下,不支持你拥有的DateTime格式对应当前的文化背景的转换,所以你应该依靠ParseExact,让你知道字符串预期的格式,并在获取结果时实现。

+0

谢谢你这么多......它的做工精细.. – Fernando 2012-02-27 05:59:03

0

你的dateformat应该是这样的。 StartDate = 1/2/2002和EndDate = 3/1/2004

1

您必须使用CultureInfo,也许默认CultureInfo不同于“en-GB”;

var cult = new System.Globalization.CultureInfo("en-GB"); 
TimeSpan span = Convert.ToDateTime("30-01-2004", cult).Subtract(Convert.ToDateTime("01-02-2002", cult));