使用正确的日期格式在C#中运行带有日期范围检查的LINQ查询

使用正确的日期格式在C#中运行带有日期范围检查的LINQ查询,c#,linq,asp.net-ajax,asp.net-3.5,jqwidget,C#,Linq,Asp.net Ajax,Asp.net 3.5,Jqwidget,我在运行LINQ查询时遇到了麻烦,我坚信这是因为日期格式。我从$ajax jQuery函数中获取ASP.NET C#code behind webMethod中日期和其他标记的字符串值,并将字符串日期转换为Convert.ToDateTime。已使用jQWidget在网页上选择日期,格式如下警告屏幕截图所示 下面是调试后代码的屏幕截图 Ajax jQuery函数 $(“#ctl00_ContentArea_btnFilterStudent”)。单击(函数(e){ e、 预防默认值(); va

我在运行LINQ查询时遇到了麻烦,我坚信这是因为日期格式。我从$ajax jQuery函数中获取ASP.NET C#code behind webMethod中日期和其他标记的字符串值,并将字符串日期转换为Convert.ToDateTime。已使用jQWidget在网页上选择日期,格式如下警告屏幕截图所示

下面是调试后代码的屏幕截图

Ajax jQuery函数
$(“#ctl00_ContentArea_btnFilterStudent”)。单击(函数(e){
e、 预防默认值();
var givendefrom=$(“#CldBoxStudentFilter_From”).jqxDateTimeInput('getDate');
var givenDateTo=$(“#CldBoxStudentFilter_To”).jqxDateTimeInput('getDate');
if(givendefrom&&givendeto)
{
var selectedFilteredValue=$(“#选项:selected”).val();
$.ajax({
url:'TutorForm.aspx/FilterStudentListInRelationToStaffByDateRange',
类型:“POST”,
数据:JSON.stringify({givenstaffed:SelectStaffID,SelectFilterOption:selectedFilteredValue,FromDate:givendeFrom,ToDate:givendeTo}),
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(响应){
警惕(“成功”);
},
故障:功能(响应){
警报(response.d);
}
}).完成(功能(响应){
});
C#代码
[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
公共静态字符串筛选器StudentListinRelationtoStaffByDateRange(字符串给定、字符串选择筛选器选项、字符串FromDate、字符串ToDate)
{
string returnList=string.Empty;
bool StudentStaffRelationActive=false;
List studentStaffRelationObject=新列表();
//var queryList=StaffRelay.GetStudentsForRelationship(Convert.ToInt32(givenstaffed)、Convert.ToDateTime(FromDate)、Convert.ToDateTime(ToDate)、RelationshipStatus.None);
if(SelectFilterOption.Equals(“StudentFilterSelectAll”))
{
var queryList=StaffRelay.GetStudentsForRelationship(Convert.ToInt32(givenstaffed),null,null,RelationshipStatus.None);
变量x=(来自queryList中的b)

其中b.RelationshipDateStart>=Convert.ToDateTime(FromDate)和&b.RelationshipDateEnd看起来像是时区问题-客户端+1小时调整。您可能必须指定服务器端预期日期的时区

    DateTime rawDate = Convert.ToDateTime(matchFromXmlSoccer.Date);
    TimeZoneInfo est = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
    DateTime targetDateTime = TimeZoneInfo.ConvertTime(rawDate, est);

看起来像是时区问题-客户端+1小时已调整。您可能必须在服务器端指定预期日期的时区

    DateTime rawDate = Convert.ToDateTime(matchFromXmlSoccer.Date);
    TimeZoneInfo est = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
    DateTime targetDateTime = TimeZoneInfo.ConvertTime(rawDate, est);

除了“麻烦”之外,你能用别的词来描述这个问题吗?什么是“麻烦”?你能发布你得到的错误吗?从上面的代码中,我在var queryList中得到了7条记录,所以当我运行链接var x=linq代码时,我得到了0条记录,我知道我肯定应该得到3条记录到x,但我得到了。没有日期范围的linq查询工作正常,所以我相信与日期格式有关here@toxic-你调试过吗在这7个记录中检查日期是否在你的情况范围内?应该是直接的。是的,但我没有得到结果。你能用任何词描述问题而不仅仅是“麻烦”吗?什么是“麻烦”?你能发布你得到的错误吗?从上面的代码中,我在var queryList中得到了7条记录,所以当我运行链接var x=linq代码时,我得到了0条记录,我知道我肯定应该得到3条记录到x,但我得到了。没有日期范围的linq查询工作正常,所以我相信与日期格式有关here@toxic-你调试过吗在这7个记录中检查日期是否符合你的情况?应该是直接的。是的,但我没有得到结果
    DateTime rawDate = Convert.ToDateTime(matchFromXmlSoccer.Date);
    TimeZoneInfo est = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
    DateTime targetDateTime = TimeZoneInfo.ConvertTime(rawDate, est);