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

C#使用Convert.ToDateTime将日期转为dd-MMM-yyyy格式用于Excel导出

解决方案

你的问题核心是:Convert.ToDateTime仅负责将字符串转换为无格式的DateTime类型对象,日期的显示格式是在调用ToString()方法时指定的,你之前直接用默认ToString()后截取前10位,自然只能得到系统默认格式的日期。

核心修正点

将原有日期转换部分的代码替换为以下逻辑,直接在ToString时传入目标格式dd-MMM-yyyy,同时指定固定区域信息保证月份为标准英文缩写:

// 请先引入命名空间 using System.Globalization;
if (audit.FromDate != null)
{
    dt1 = Convert.ToDateTime(audit.FromDate);
    // 指定输出格式和固定区域,避免系统语言影响月份缩写
    StartDate = dt1.Value.ToString("dd-MMM-yyyy", CultureInfo.InvariantCulture);
}
if (audit.ToDate != null)
{
    dt2 = Convert.ToDateTime(audit.ToDate);
    EndDate = dt2.Value.ToString("dd-MMM-yyyy", CultureInfo.InvariantCulture);
}

兼容任意输入日期格式的更稳妥方案

如果输入的日期字符串格式不固定,建议用TryParseExact预先配置所有可能的输入格式,避免转换失败抛出异常:

// 预先定义所有可能出现的输入日期格式,可按需扩展
string[] inputFormats = new[] { "yyyy-MM-dd", "MM/dd/yyyy", "dd/MM/yyyy", "yyyy/MM/dd", "MM-dd-yyyy", "dd-MM-yyyy" };

foreach (var audit in collection)
{
    string StartDate = null, EndDate = null;
    // 处理开始日期
    if (!string.IsNullOrWhiteSpace(audit.FromDate?.ToString()))
    {
        if (DateTime.TryParseExact(audit.FromDate.ToString(), inputFormats, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime fromDate))
        {
            StartDate = fromDate.ToString("dd-MMM-yyyy", CultureInfo.InvariantCulture);
        }
    }
    // 处理结束日期
    if (!string.IsNullOrWhiteSpace(audit.ToDate?.ToString()))
    {
        if (DateTime.TryParseExact(audit.ToDate.ToString(), inputFormats, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime toDate))
        {
            EndDate = toDate.ToString("dd-MMM-yyyy", CultureInfo.InvariantCulture);
        }
    }
    // 后续插入obj的逻辑保持不变
}

注意事项

  • 必须引入System.Globalization命名空间才能使用CultureInfo类
  • 保留CultureInfo.InvariantCulture可保证月份固定为英文缩写(Jan、Feb等),如果需要其他语言的月份缩写可替换为对应区域信息
  • 推荐使用第二种稳妥方案,可避免异常输入导致的程序崩溃

内容的提问来源于stack exchange,提问作者Konda Reddy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 05:15:04