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

Radzen X轴格式化方法问题:动态日期范围X轴标签渲染异常

时间范围X轴标签格式化问题修复

需求说明

用户可通过下拉框选择指定日期范围标签(今日/昨日、本周/上周、本月/上月、本年/上年),动态渲染对应时间范围的销售数据,X轴标签需遵循以下规则:

  • 今日/昨日:显示12小时制小时格式(如12 am、3 pm)
  • 本周/上周:显示星期缩写(如Sun、Mon)
  • 本月/上月:显示日期(如1、31)
  • 本年/上年:显示月份缩写(如Jan、Dec)

原代码问题分析

原FormatXAxis方法存在以下问题导致功能异常:

  1. 冗余的时间范围校验:已经通过selectedDateRange确定了当前时间范围,无需再对传入的dateTime做范围判断,多余判断会导致符合条件的时间点返回空值。
  2. 星期范围覆盖不全:本周/上周的逻辑仅处理了周一至周四,遗漏了周五、周六、周日,这些日期会返回空字符串。
  3. 日期格式未适配需求细节:原代码中本月/上月使用"dd"会返回带前导零的日期(如05),不符合需求中"1 - 30或1-31"的无前置零要求。

修复后的代码

public string FormatXAxis(object value)
{
    DateTime dateTime = (DateTime)value;

    switch (selectedDateRange)
    {
        case "Today":
        case "Yesterday":
            // 12小时制格式,包含am/pm,如"12 am"、"3 pm"
            return dateTime.ToString("h tt", CultureInfo.InvariantCulture);
        case "Current Week":
        case "Last Week":
            // 返回星期缩写(Sun/Mon/Tue等)
            return dateTime.ToString("ddd", CultureInfo.InvariantCulture);
        case "Current Month":
        case "Last Month":
            // 返回无前置零的日期,符合需求中的"1 - 30"格式
            return dateTime.ToString("d", CultureInfo.InvariantCulture);
        case "Current Year":
        case "Last Year":
            // 返回月份缩写(Jan/Feb等)
            return CultureInfo.InvariantCulture.DateTimeFormat.GetAbbreviatedMonthName(dateTime.Month);
        default:
            return string.Empty;
    }
}

修复说明

  1. 改用switch语句替代多个else if,代码结构更简洁易维护。
  2. 移除冗余的时间范围校验,直接根据选中的日期范围返回对应格式。
  3. 补全本周/上周的所有星期几处理逻辑,确保所有日期都能返回正确的星期缩写。
  4. 调整本月/上月的日期格式为"d",返回无前置零的日期,匹配需求中的显示规则。

内容的提问来源于stack exchange,提问作者Logan Aaron

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:57:22