Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 日期差返回错误答案_C#_Asp.net_Datetime_Datepicker - Fatal编程技术网

C# 日期差返回错误答案

C# 日期差返回错误答案,c#,asp.net,datetime,datepicker,C#,Asp.net,Datetime,Datepicker,对于我一直面临的这个问题,我真的很想得到一些指导。 我试图从文本框中找出两个日期之间的差异 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 DateTi

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

   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事件中编写的代码。 问题是,代码返回的差异是错误的

i、 e如果要找到2013年2月12日和2013年2月11日之间的差异,而不是返回1 代码返回30。 同样,将找到2013年2月12日和2013年2月10日之间的差异,而不是返回2 代码返回61

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

也许您可以使用:

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

也许您可以使用:


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

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

例如:- 就你而言

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

而且它应该可以工作。

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

例如:- 就你而言

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

在进行减法运算之前,应该将日期格式转换为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);
}

在进行减法运算之前,应将日期格式转换为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);
}

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

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

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

$("#txtDate.datepicker").datepicker({ dateFormat: 'mm-dd-yy' });
DateTime.ParseExact(txtDate.Text, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
在jQuery中,您可以将测试解析为

var dateInJs = $.datepicker.parseDate('mm-dd-yy', $('#txtDate.datepicker').val());
或者在.NET中,您可以将“dd-MM-yyyy”格式的日期解析为

$("#txtDate.datepicker").datepicker({ dateFormat: 'mm-dd-yy' });
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"));

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

$("#txtDate.datepicker").datepicker({ dateFormat: 'mm-dd-yy' });
DateTime.ParseExact(txtDate.Text, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
在jQuery中,您可以将测试解析为

var dateInJs = $.datepicker.parseDate('mm-dd-yy', $('#txtDate.datepicker').val());
或者在.NET中,您可以将“dd-MM-yyyy”格式的日期解析为

$("#txtDate.datepicker").datepicker({ dateFormat: 'mm-dd-yy' });
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年12月2日和2013年11月2日相隔30天。格式是。日期格式不是您预期的D/M/Y,它似乎是M/D/Y。您可能应该根据您的区域性检查您使用的日期时间格式。
.Text.ToString()
-为什么
.Text
已给您一个字符串。类似地,
=newdatetime()-没有必要,您将立即为
c
d
分配不同的值。我假设您是印度人,可能来自喀拉拉邦,尝试使用System.Globalization.CultureInfo.CreateSpecificCulture(“hi-IN”),如果您对印度有特定的格式要求。2013年12月2日和11月2日,2013年相隔30天。格式是。日期格式不是您预期的D/M/Y,它似乎是M/D/Y。您可能应该根据您的区域性检查您使用的日期时间格式。
.Text.ToString()
-为什么
.Text
已给您一个字符串。类似地,
=newdatetime()-没有必要,您将立即为
c
d
分配不同的值。我假设您是印度人,可能来自喀拉拉邦,如果您对印度有特定的格式要求,请尝试使用System.Globalization.CultureInfo.CreateSpecificCulture(“hi-IN”)。