Ako*_*old 29 c# datetime parsing
我正在编写一个syslog服务器,它接收syslog消息并将它们存储在数据库中.
我试图将消息中收到的日期字符串解析为DateTime结构.
对于以下示例,为了清晰起见,我将使用下划线代替空格; 收到的实际字符串有空格.
我收到的字符串格式是"Jun__7_08:09:10"- 请注意月和日之间的两个空格.
如果日期在10日之后,则字符串变为"Jun_10_08:09:10"(一个空格).
如果我解析:
DateTime.ParseExact(Log.Date, "MMM d HH:mm:ss", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
它适用于从第1到第9的字符串,但是从第10个向前抛出异常,如果我用一个空格解析,它会在1到9日抛出异常(并且从第10个开始工作).
解析这个字符串的正确方法是什么?
Mik*_*oud 48
考虑使用此行:
DateTime.ParseExact(Log.Date,
"MMM d HH:mm:ss",
CultureInfo.InvariantCulture,
DateTimeStyles.AllowWhiteSpaces);
Run Code Online (Sandbox Code Playgroud)
请注意,我删除了月份和日期之间的空格.那是因为AllowWhiteSpaces字面意思是:
指定s可能包含未由格式定义的前导,内部和尾随空格.
Ode*_*ded 23
使用DateTime.ParseExact带有一组格式字符串的重载:
DateTime.ParseExact(Log.Date,
new [] {"MMM d HH:mm:ss", "MMM d HH:mm:ss"},
CultureInfo.InvariantCulture,
DateTimeStyles.None);
Run Code Online (Sandbox Code Playgroud)