[英]date difference between two dates
我想计算表单日期和两个日期之间的日期差。如果时间差为正,则使用时间跨度来计算两个日期之间的差,即表示它进入另一个进程下降意味着返回错误消息。
我的部分代码在这里。
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);
}
在上面的代码中输入的是结束日期:2004年1月30日开始日期:2002年2月1日
但它返回错误消息:无法将字符串识别为有效的DateTime。
请给我一个解决方案,以解决此问题,而无需更改日期格式...
您应该使用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
来了解格式期望字符串,并在其中获取结果。
您需要指定转换的区域性。 默认情况下,它应使用PC的默认日期格式,但这并不总是有效。
您应该查看有关为Convert.ToDateTime方法指定格式提供程序的信息, 网址为http://msdn.microsoft.com/zh-cn/library/9xk1h71t.aspx
以及有关您需要创建以处理区域性的DateTimeFormatInfo对象的信息: http : //msdn.microsoft.com/zh-cn/library/system.globalization.datetimeformatinfo.aspx
您必须使用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));
天差
public long getDaysBetweenDates(Date d1, Date d2){
return TimeUnit.MILLISECONDS.toDays(d1.getTime() - d2.getTime());
}
日期与时间之间的时差
Date startDate = // Set start date
Date endDate = // Set end date
long duration = endDate.getTime() - startDate.getTime();
long diffInSeconds = TimeUnit.MILLISECONDS.toSeconds(duration);
long diffInMinutes = TimeUnit.MILLISECONDS.toMinutes(duration);
long diffInHours = TimeUnit.MILLISECONDS.toHours(duration);
您的dateformat应该是这样的。 StartDate = 1/2/2002和EndDate = 3/1/2004
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.