有没有办法比较C#中的日期"字符串"而不转换字符串?

Kev*_*vin 14 c#

我有两个领域:

string date1 = "04/26/10";
string date2 = "04/25/10";
Run Code Online (Sandbox Code Playgroud)

如何比较这两个字段?:

if (date2 <= date1)
{
  // perform some code here
}
Run Code Online (Sandbox Code Playgroud)

这可以在没有先将字段转换为单独的日期类型变量的情况下完成吗?

编辑:我应该提到这些值来自数据库表,其中日期值以字符串格式开头.旧遗留代码......

jle*_*jle 41

不,但在C#中转换为日期并不困难.

if ( DateTime.Parse(date2) <=  DateTime.Parse(date1))

{
  // perform some code here
}
Run Code Online (Sandbox Code Playgroud)


Dan*_*Tao 13

如果您的日期作为字符串实际存储数据库中,好像你不能相信他们会是有效的格式解析之前.出于这个原因,我建议jle的回答有一个小的变化:

DateTime d1, d2;
if (DateTime.TryParse(date1, out d1) &&
    DateTime.TryParse(date2, out d2) &&
    d2 <= d1)
{
    // perform some code here
}
else
{
    // strings didn't parse, but hey,
    //at least you didn't throw an exception!
}
Run Code Online (Sandbox Code Playgroud)


ang*_*son 5

至少你需要拆分字符串,以便按正确的顺序进行比较.

如果你想把它们保留为字符串,那么你需要用LARGEST-> SMALLEST单位重新排序它们,所以这个:

yyyy/mm/dd
Run Code Online (Sandbox Code Playgroud)

可以直接比较,但不是你的格式.使用您的格式,您需要将其拆分,然后像上面那样重新组合,或者按照正确的顺序比较各个部分.

话虽如此,使用DateTime.ParseExact将字符串转换为DateTime相当容易.