C# 两个日期之间的日期差

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来计算两个日期之间的差如果日期差为正表示它进入另一个进程,则表示它返回错误消息

我的部分代码在这里

  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);