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

如何将多格式日期字符串转为MM/dd/yyyy并按规则返回年份?

解决日期字符串解析错误并实现格式转换与年份计算

你的代码报错原因是DateTime.ParseExact仅指定了MM/dd/yyyy这一种解析格式,但输入的2023-05-28t00:00:00属于另一种格式,导致无法识别。要同时支持两种输入格式并完成需求,可按以下方式修改:

修正后的代码

string dateInput = "2023-05-28t00:00:00";
string yr = string.Empty;

if (!string.IsNullOrWhiteSpace(dateInput))
{
    // 定义所有支持的输入格式,小写t用单引号标记为字面量字符
    string[] allowedFormats = { "yyyy-MM-dd't'HH:mm:ss", "MM/dd/yyyy" };
    DateTime date = DateTime.ParseExact(dateInput, allowedFormats, 
                          CultureInfo.InvariantCulture, DateTimeStyles.None);

    // 直接获取日期的月份,无需截取字符串解析
    int currentMon = date.Month;
    int cycleYear = currentMon >= 4 ? date.Year + 1 : date.Year;
    yr = cycleYear.ToString();

    // 生成统一的MM/dd/yyyy格式日期字符串
    string formattedDate = date.ToString("MM/dd/yyyy");
}

关键说明

  • 多格式解析:通过allowedFormats数组传入两种输入格式,ParseExact会自动匹配符合的格式完成解析。其中't'是字面量标记,用于匹配输入中的小写t字符。
  • 简化月份获取:直接使用date.Month获取月份,避免了字符串截取和二次解析的冗余操作,代码更简洁可靠。
  • 统一输出格式:转换后的DateTime对象调用ToString("MM/dd/yyyy")即可得到标准格式的日期字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 23:26:22