C#解析Elastic(Kibana)导出的特殊格式日期抛出异常问题
解析Kibana导出的特定日期格式为DateTime类型
默认的DateTime.Parse无法识别这种带@符号的自定义日期格式,你需要使用**DateTime.ParseExact或DateTime.TryParseExact**显式指定匹配的格式字符串,同时指定英文文化信息(因为月份是英文缩写)。
解决方案代码
首先确保引用System.Globalization命名空间,然后使用以下代码:
使用ParseExact(直接解析,适用于确定格式完全合规的场景)
using System.Globalization; string kibanaDate = "Dec 6, 2022 @ 23:59:59.000"; DateTime parsedDate = DateTime.ParseExact( kibanaDate, "MMM d, yyyy @ HH:mm:ss.fff", CultureInfo.InvariantCulture );
使用TryParseExact(更安全,避免抛出异常)
如果不确定所有日期字符串格式都正确,推荐用这个方法处理解析失败的情况:
using System.Globalization; string kibanaDate = "Dec 6, 2022 @ 23:59:59.000"; if (DateTime.TryParseExact( kibanaDate, "MMM d, yyyy @ HH:mm:ss.fff", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime parsedDate )) { // 解析成功,在这里处理parsedDate Console.WriteLine(parsedDate.ToString()); } else { // 解析失败的处理逻辑 Console.WriteLine("无法识别该日期格式"); }
格式字符串说明
"MMM d, yyyy @ HH:mm:ss.fff"各部分含义:
MMM:英文月份缩写(如Dec)d:1-2位的日期(如6或12)yyyy:四位年份@:字面量匹配字符串中的@符号HH:24小时制的小时数(00-23)mm:分钟数(00-59)ss:秒数(00-59)fff:三位毫秒数
内容的提问来源于stack exchange,提问作者pampua84
相关产品推荐
相关产品推荐

