如何将XML中转义的日期字符串转换为C# DateTime?
解决方法
你的问题核心是日期字符串里的冒号被双重HTML转义了,:实际是:的两次转义结果(先把:转成:,再把&转成&),所以第一步必须先把字符串解码还原成正常的日期格式,再进行DateTime解析。
步骤1:解码HTML实体
使用WebUtility.HtmlDecode(适用于.NET Core/.NET 5+)或HttpUtility.HtmlDecode(适用于.NET Framework)把转义后的字符串还原:
using System.Net; string dateString = "1/10/2023 5:00:00 PM"; // 解码后得到 "1/10/2023 5:00:00 PM" string decodedDateString = WebUtility.HtmlDecode(dateString);
步骤2:解析为DateTime
解码后的字符串是标准的美式日期格式,直接用DateTime.Parse配合en-US文化即可,或者用ParseExact指定格式更稳妥:
using System.Globalization; // 方法1:使用Parse CultureInfo usCulture = new CultureInfo("en-US"); DateTime result = DateTime.Parse(decodedDateString, usCulture); // 方法2:使用ParseExact(更精确,避免格式歧义) string format = "M/d/yyyy h:mm:ss tt"; DateTime resultExact = DateTime.ParseExact(decodedDateString, format, usCulture);
为什么之前的代码失败?
你之前的所有尝试都直接使用了未解码的字符串,解析器无法识别:作为时间分隔符,自然解析失败。必须先完成HTML实体解码,才能让日期字符串符合解析器的格式要求。
内容的提问来源于stack exchange,提问作者Jophy job
相关产品推荐
相关产品推荐

