1

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

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

以上是我在 Button Click 事件中编写的代码。问题是,代码返回的差异是错误的。

即,如果要找到 12/02/2013 和 11/02/2013 之间的差异,则代码不会返回 1,而是返回 30。类似地,要找到 12/02/2013 和 10/02/2013 之间的差异,而不是返回 2 的代码返回 61。

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

4

5 回答 5

2

在进行减法之前,您应该将日期格式转换为 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);
}
于 2013-02-12T07:37:18.080 回答
1

唯一的问题是日期的格式
正如您所写,它显示的是月差而不是日期差。
尝试使用 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);

它应该工作。

于 2013-02-12T06:39:21.243 回答
1

您可以将 jQuery datepicker 的日期格式更改为

$("#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);

您也可以在 .NET 中使用 CultureInfo,例如

DateTime Date = DateTime.Parse(txtDate.Text, System.Globalization.CultureInfo.CreateSpecificCulture("hi-IN"));
于 2013-02-12T08:08:36.247 回答
0

也许你可以使用TimeSpan

DateTime startTime = '';
DateTime endTime = '';

TimeSpan span = endTime.Subtract( startTime );

接下来你可以利用span.Seconds, span.Days...等

于 2013-02-12T06:37:43.137 回答
0

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

于 2013-02-12T07:50:40.030 回答