You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中忽略时间比较日期及函数返回结果异常修复方法

问题修复方案

问题原因

函数返回不符合预期的核心问题:

  • DateTime.Now包含当前具体时间(时/分/秒),而DateTime.ParseExact解析出的FeesType1是06-10-2023 00:00:00(当天零点)。只要当前时间不是0点整,TodayDate就会大于FeesType1,从而进入第二个分支返回2,而非预期的1。
  • 最后一个分支的TodayDate <= FeesType4 || TodayDate > FeesType4逻辑冗余,该表达式永远为true,完全可以简化为else。

修复后的代码

using System.Globalization;

int value = GetFeesType();

Console.WriteLine("FeesType =  {0}", value);

int GetFeesType()
{
    int FeesType = 1;

    // 使用DateTime.Today获取当前日期的00:00:00,仅比较日期部分
    DateTime TodayDate = DateTime.Today;

    DateTime FeesType1 = DateTime.ParseExact("06-10-2023", "dd-MM-yyyy", null);
    DateTime FeesType2 = DateTime.ParseExact("27-10-2023", "dd-MM-yyyy", null);
    DateTime FeesType3 = DateTime.ParseExact("16-11-2023", "dd-MM-yyyy", null);
    DateTime FeesType4 = DateTime.ParseExact("01-12-2023", "dd-MM-yyyy", null);

    if (TodayDate <= FeesType1)
    {
        FeesType = 1;
    }
    else if (TodayDate <= FeesType2)
    {
        FeesType = 2;
    }
    else if (TodayDate <= FeesType3)
    {
        FeesType = 3;
    }
    else
    {
        FeesType = 4;
    }

    return FeesType;
}

额外优化建议

如果使用.NET 6及以上版本,推荐用DateOnly类型专门处理日期,彻底避免时间部分的干扰:

int GetFeesType()
{
    int FeesType = 1;

    DateOnly TodayDate = DateOnly.FromDateTime(DateTime.Now);

    DateOnly FeesType1 = DateOnly.ParseExact("06-10-2023", "dd-MM-yyyy", null);
    DateOnly FeesType2 = DateOnly.ParseExact("27-10-2023", "dd-MM-yyyy", null);
    DateOnly FeesType3 = DateOnly.ParseExact("16-11-2023", "dd-MM-yyyy", null);
    DateOnly FeesType4 = DateOnly.ParseExact("01-12-2023", "dd-MM-yyyy", null);

    if (TodayDate <= FeesType1)
    {
        FeesType = 1;
    }
    else if (TodayDate <= FeesType2)
    {
        FeesType = 2;
    }
    else if (TodayDate <= FeesType3)
    {
        FeesType = 3;
    }
    else
    {
        FeesType = 4;
    }

    return FeesType;
}

内容的提问来源于stack exchange,提问作者saeed ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 13:32:49