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”)。