我想要计算表单日期和两个date..Am之间的日期差异,使用timespan来计算两个日期之间的差异,如果日期差异为正意味着它进入另一个进程,意味着它返回错误消息。
我的部分代码在这里..
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开始日期: 01-02-2002
但它返回错误消息:字符串未被识别为有效的DateTime。
请给我一个不改变日期格式的解决方案...
发布于 2012-02-27 13:53:02
您应该使用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,通过它您可以知道字符串的预期格式,并在获取结果时实现。
发布于 2012-02-27 13:48:29
您需要指定转换的区域性。默认情况下,它应该使用你的电脑的默认日期格式,但这并不总是有效。
关于为Convert.ToDateTime方法http://msdn.microsoft.com/en-us/library/9xk1h71t.aspx指定格式提供程序,您应该了解一下这一点
这是关于您需要创建以处理区域性的DateTimeFormatInfo对象:http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo.aspx
发布于 2012-02-27 14:07:13
您必须使用与“en-GB”不同的CultureInfo可能是默认CultureInfo;
var cult = new System.Globalization.CultureInfo("en-GB");
TimeSpan span = Convert.ToDateTime("30-01-2004", cult).Subtract(Convert.ToDateTime("01-02-2002", cult));https://stackoverflow.com/questions/9460521
复制相似问题