如何在将字符串输入Convert.DateTime()之前检查字符串的格式

本文关键字:字符串 检查 格式 DateTime 输入 Convert | 更新日期: 2023-09-27 18:03:09

我有一个LINQ查询

rpt = base.Session.QueryOver<Report>(() => rptAlias).
                                  JoinAlias(() => rptAlias.ReportStatus, () => statusAlias).
                                  JoinAlias(() => rptAlias.Patient, () => patAlias).Left.JoinAlias(() => rptAlias.SoapNotes, () => soapAlias).
                                  JoinAlias(() => patAlias.User, () => usrAlias).Where
                                  (() => (usrAlias.FirstName.IsLike(data, MatchMode.Anywhere)
                                  || usrAlias.LastName.IsLike(data, MatchMode.Anywhere) || usrAlias.Email.IsLike(data, MatchMode.Anywhere) || (patAlias.DateOfBirth.Date)==(Convert.ToDateTime(data)) ||
                                 (patAlias.MedNexusId.IsLike(data, MatchMode.Anywhere) || patAlias.MedNexusId == null)) && usrAlias.IsDeleted == false
                                  && rptAlias.IsDeleted == false && rptAlias.IsNormal.IsIn(lstIsNormal)
                                  && statusAlias.Id.IsIn(lstSearch)
                                  )
                                  .OrderBy(() => usrAlias.LastName).Desc.OrderBy(() => rptAlias.Id).Asc
                                 .Skip(pageNumber * pageSize)
                                 .Take(pageSize)
                                 .List<Report>();

这里你一定已经注意到一个变量数据,现在的问题是它包含了我们在视图的文本框中输入的任何内容,所以它可能包含1.第一个名字2.姓3.Id4.电子邮件Id5.出生日期

或者最坏的情况是它也可以是空的,所以当它包含出生日期时,一切都很好,但在其他情况下,数据不是以适当的格式作为参数传递给Convert.ToDateTime,我得到异常。

所以我的问题是我如何事先检查数据格式是否正确?

如何在将字符串输入Convert.DateTime()之前检查字符串的格式

您应该使用DateTime.TryParse

您需要在创建查询之前解析字符串,这是一件好事-首先确保您的输入是正确的,然后处理它。

试试这个:

    DateTime myDt;
    bool parsed = DateTime.TryParseExact(date,"d/M/yyyy",null,out myDt);
    if(parsed) DoSomething;

DateTime。TryParseExact的工作原理是获取一个日期模板,你在这里看到的是"d/M/yyyy",并尝试将字符串匹配得像"12/03/1902"一样精确。点击这里了解更多信息:http://msdn.microsoft.com/en-us/library/ms131044 (v = vs.110) . aspx

也可以使用DateTime。TryParse