字符串未被识别为有效的日期时间服务器错误

本文关键字:日期 时间 服务器 错误 有效 识别 字符串 | 更新日期: 2023-09-27 18:18:41

下面是我的代码

var result =
    (from SV in Tbl
     where (DateTimeOffset.Parse(SV.FieldName) >= DateTimeOffset.Parse(StartDate) 
     && DateTimeOffset.Parse(SV.FieldName) <= DateTimeOffset.Parse(EndDate))
     group SV by 1 into SVgrp
     select new { Count = SVgrp.Sum(p => p.Count) }).ToList()

SV.FieldName = '19-06-2015', StartDate = '2015-09-20T00:00:00Z', EndDate = '2015-10-21T23:59:59Z'的值

在我的开发机器上,这段代码工作得很好,而在我的服务器上,它给我错误String was not recognized as a valid DateTime

我的两台机器都有日期格式设置为英语(印度),位置设置为印度,时区设置为UTC。

我尝试在所有四个Parse方法上添加CultureInfo.InvariantCulture,但错误没有发生。

为什么我只在服务器上得到这个错误?如何解决这个问题?

字符串未被识别为有效的日期时间服务器错误

我确定在转换s.p fieldname = '19-06-2015'的值时出现错误。编译器假定格式为MM-dd-yyyy,因此19被视为无效的月份号。

我的建议是构造日期值,见下面

    var result = (from SV in Tbl
           where (new DateTime(Convert.ToInt32(SV.FieldName.Substring(6, 4)), Convert.ToInt32(SV.FieldName.Substring(3, 2)), Convert.ToInt32(SV.FieldName.Substring(0, 2))) >= DateTimeOffset.Parse(StartDate) 
           && new DateTime(Convert.ToInt32(SV.FieldName.Substring(6, 4)), Convert.ToInt32(SV.FieldName.Substring(3, 2)), Convert.ToInt32(SV.FieldName.Substring(0, 2))) <= DateTimeOffset.Parse(EndDate))
           group SV by 1 into SVgrp
           select new { Count = SVgrp.Sum(p => p.Count) }).ToList()

这不是最好的,但它会做的工作。

尝试使用DateTime。ParseExact(dateString, @"d/M/yyyy", System.Globalization.CultureInfo.InvariantCulture);

DateTime。TryParse (dateString, date4);

如果解析失败,它不会抛出错误,而是返回false,表示解析失败。