日期差返回错误答案

本文关键字:答案 错误 返回 日期 | 更新日期: 2023-09-27 17:58:41

我真的很想得到一些关于我一直面临的这个问题的指导。我正试图从文本框中找出两个日期之间的区别。

   protected void Button1_Click(object sender, EventArgs e)
{
    a = TextBox1.Text.ToString().Trim();
    b = TextBox2.Text.ToString().Trim();
    DateTime c = new DateTime();
    DateTime d = new DateTime();
    c = Convert.ToDateTime(a);
    d = Convert.ToDateTime(b);
    System.TimeSpan diffr = d - c;
    Response.Write(diffr.Days);
}

以上是我在按钮点击事件上写的代码。问题是,代码返回的差异是错误的。

即,如果要找到2013年2月12日和2013年2日11日之间的差异,而不是返回1代码返回30。类似地,2013年2月12日和2013年2日10日之间的差异将被发现,而不是返回2代码返回61。

我正在使用Jquery DatePicker来选择日期!请帮忙,因为我的所有搜索都没有找到任何解决方案。

日期差返回错误答案

在执行子操作之前,您应该将日期格式转换为dd/mm/yyyy。这是你的最终代码-

protected void Button1_Click(object sender, EventArgs e)
{
        string a, b;
        a = TextBox1.Text.ToString().Trim();
        b = TextBox2.Text.ToString().Trim();
        DateTime c = new DateTime();
        DateTime d = new DateTime();
        c = Convert.ToDateTime(a);
        d = Convert.ToDateTime(b);
        DateTime to_datetime = DateTime.ParseExact(a, "dd/MM/yyyy",
                                           System.Globalization.CultureInfo.InvariantCulture);
        DateTime from_datetime = DateTime.ParseExact(b, "dd/MM/yyyy",
                                                     System.Globalization.CultureInfo.InvariantCulture);
        System.TimeSpan diffr = to_datetime - from_datetime;
        Response.Write(diffr.Days);
}

唯一的问题是日期的格式
正如你所写的,它显示的是月份差异,而不是日期差异
请尝试使用datetime.parseexact并指定您的格式

示例:-

 string poop = "2005-12-14T14:35:32.1700000-07:00";
 DateTime poo = DateTime.ParseExact(poop,"yyyy-MM-ddTHH:mm:ss.fffffffzzz",        
                                System.Globalization.CultureInfo.InvariantCulture);

在您的情况下

 string sDate1=TextBox1.Text.ToString().Trim();
 string sDate2=TextBox1.Text.ToString().Trim();
 DateTime dt1= DateTime.ParseExact(sDate1,"MM-dd-yyyy",        
                                System.Globalization.CultureInfo.InvariantCulture);
 DateTime dt2= DateTime.ParseExact(sDate2,"MM-dd-yyyy",        
                                System.Globalization.CultureInfo.InvariantCulture);
 System.TimeSpan diffr =dt2 - dt1;
 Response.Write(diffr.Days);

它应该起作用。

您可以将jQuery日期选择器的日期格式更改为

$("#txtDate.datepicker").datepicker({ dateFormat: 'mm-dd-yy' });

在jQuery中,您可以将迄今为止的测试解析为

var dateInJs = $.datepicker.parseDate('mm-dd-yy', $('#txtDate.datepicker').val());

或者在。NET中,您可以将"dd-MM-yyyy"格式的日期解析为

DateTime.ParseExact(txtDate.Text, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);

也可以在中使用CultureInfo。NET类

DateTime Date = DateTime.Parse(txtDate.Text, System.Globalization.CultureInfo.CreateSpecificCulture("hi-IN"));

也许您可以使用TimeSpan:

DateTime startTime = '';
DateTime endTime = '';
TimeSpan span = endTime.Subtract( startTime );

接下来您可以使用span.Seconds, span.Days。。。etc

我认为这个问题是由于您的计算机日期时间格式设置造成的。请将您的计算机日期时间格式更改为dd/MM/yyyy格式,然后重试。