C# 两个日期之间的日期差
我想计算表单日期和两个日期之间的日期差..我使用timespan来计算两个日期之间的差如果日期差为正表示它进入另一个进程,则表示它返回错误消息 我的部分代码在这里C# 两个日期之间的日期差,c#,asp.net,timespan,C#,Asp.net,Timespan,我想计算表单日期和两个日期之间的日期差..我使用timespan来计算两个日期之间的差如果日期差为正表示它进入另一个进程,则表示它返回错误消息 我的部分代码在这里 TimeSpan span = Convert.ToDateTime(txtenddate.Text).Subtract(Convert.ToDateTime(txtstartdate.Text)); int formatted = span.Days; if (formatted < 1)
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);
}
TimeSpan=Convert.ToDateTime(txtenddate.Text).Subtract(Convert.ToDateTime(txtstartdate.Text));
int格式=span.天;
如果(格式化<1)
{
ScriptManager.RegisterStartupScript(this,this.GetType(),“temp”,“警报('Invalid date difference');”,false);
}
在上述代码中,输入的是结束日期:30-01-2004开始日期:01-02-2002
但它返回错误消息:字符串未被识别为有效的日期时间
请给我一个解决方案,在不更改日期格式的情况下解决此问题…您需要指定转换的区域性。默认情况下,它应该使用默认的日期格式为您的电脑,但这并不总是工作 您应该了解有关为Convert.ToDateTime方法指定格式提供程序的信息
关于DateTimeFormatInfo对象,您需要创建它来处理区域性:您需要为转换指定区域性。默认情况下,它应该使用默认的日期格式为您的电脑,但这并不总是工作 您应该了解有关为Convert.ToDateTime方法指定格式提供程序的信息
关于处理区域性需要创建的DateTimeFormatInfo对象:您应该使用
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
,通过它您可以知道字符串的预期格式并获取结果。您应该使用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
,通过它您可以知道字符串的预期格式,并获取结果。您的日期格式应该如下所示。StartDate=1/2/2002和EndDate=3/1/2004您的日期格式应如下所示。StartDate=1/2/2002和EndDate=3/1/2004您必须使用CultureInfo,可能是与“en GB”不同的默认CultureInfo
您必须使用CultureInfo,可能是与“en GB”不同的默认CultureInfo 天差地别 日与时之间的日期差 天差地别 日与时之间的日期差
尝试使用
DateTime.ParseExact
而不是Convert.ToDateTime
尝试使用DateTime.ParseExact
而不是Convert.ToDateTime
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);