我真的希望对我遇到的这个问题提供一些指导。 我试图找出文本框中两个日期之间的区别。
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来选择日期! 请帮助,因为我的所有搜索都没有产生任何解决方案。
答案 0 :(得分: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);
}
答案 1 :(得分: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);
它应该有用。
答案 2 :(得分: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"));
答案 3 :(得分:0)
也许您可以使用TimeSpan
:
DateTime startTime = '';
DateTime endTime = '';
TimeSpan span = endTime.Subtract( startTime );
接下来,您可以使用span.Seconds, span.Days
...等
答案 4 :(得分:0)
我认为此问题是由于您的计算机日期时间格式设置造成的。请将您的计算机日期时间格式更改为dd / MM / yyyy格式,然后重试。