C#如何将日期字符串25APR18转换为2018-04-25?
解决字符串"25APR18"转"2018-04-25"的日期解析问题
你遇到的报错核心原因是格式字符串和输入日期的结构完全不匹配,咱们一步步来修正:
错误原因分析
你用的格式字符串是"yyyy-mm-dd",但输入的"25APR18"结构是「两位日期 + 三位英文月份缩写 + 两位年份」,两者完全对应不上,所以ParseExact无法识别并抛出错误。
正确的解决方案
1. 匹配输入结构的格式字符串
正确的格式字符串应该是"ddMMMyy",各部分对应含义:
dd:两位数字的日期(对应输入里的25)MMM:三位英文月份缩写(对应输入里的APR)yy:两位数字的年份(对应输入里的18)
2. 完整代码示例
using System; using System.Globalization; class DateConversionExample { static void Main() { string inputDate = "25APR18"; // 第一步:用匹配的格式解析字符串为DateTime对象 DateTime parsedDate = DateTime.ParseExact(inputDate, "ddMMMyy", CultureInfo.InvariantCulture); // 第二步:将DateTime对象格式化为目标格式"yyyy-MM-dd" string outputDate = parsedDate.ToString("yyyy-MM-dd"); Console.WriteLine(outputDate); // 输出结果:2018-04-25 } }
关键注意点
- 一定要传入
CultureInfo.InvariantCulture,因为月份缩写是英文的,避免系统区域设置为非英文时解析失败。 - 格式字符串的每个部分必须和输入字符串的结构严格对应,这是
ParseExact方法的核心要求。
内容的提问来源于stack exchange,提问作者gene
相关产品推荐
相关产品推荐

