关于C# DateTime.TryParseExact多格式解析匹配顺序的问询
DateTime.TryParseExact 多格式匹配规则说明
DateTime.TryParseExact 会严格按照你传入的格式数组顺序,匹配到第一个符合的格式后就立即返回结果,不会继续遍历后续格式。
结合你的测试代码和结果可以验证这一点:
测试代码:
string text = "06/01/2023"; string[] formatsArray = new string[] { "yyyyMMdd", "dd/MM/yyyy", "dd-MMM-yy", "MM/dd/yyyy", "MM-dd-yyyy" }; DateTime result; DateTime.TryParseExact(text, formatsArray, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out result);
当输入文本为"06/01/2023"时,格式数组中"dd/MM/yyyy"排在"MM/dd/yyyy"之前,因此方法优先匹配前者,最终得到的结果是:result = 日: 06, 月: 01, 年: 2023
如果调整格式数组的顺序,将"MM/dd/yyyy"放在"dd/MM/yyyy"前面,解析结果会变成日: 01, 月: 06, 年: 2023,这进一步证明了匹配逻辑是按数组顺序查找第一个有效格式,找到即停止。
内容的提问来源于stack exchange,提问作者Bola Adel Nassif
相关产品推荐
相关产品推荐

