如何将多格式日期字符串转为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
相关产品推荐
相关产品推荐

