我正在编写一个系统日志服务器,用于接收系统日志消息并将它们存储在数据库中。
我正在尝试将消息中收到的日期字符串解析为 DateTime
结构。
对于以下示例,为了清晰起见,我将使用下划线代替空格;实际收到的字符串有空格。
我收到的字符串格式为 "Jun__7_08:09:10"
- 请注意月份和日期之间的两个空格。
如果日期在 10 号之后,则字符串变为 "Jun_10_08:09:10"
(一个空格)。
如果我解析:
DateTime.ParseExact(Log.Date, "MMM d HH:mm:ss", CultureInfo.InvariantCulture);
它适用于从 1 号到 9 号的字符串,但从 10 号开始抛出异常,如果我用一个空格解析,它会在 1 号到 9 号抛出异常(并且从 10 号开始起作用)。
解析这个字符串的正确方法是什么?
最佳答案
考虑使用这一行:
DateTime.ParseExact(Log.Date,
"MMM d HH:mm:ss",
CultureInfo.InvariantCulture,
DateTimeStyles.AllowWhiteSpaces);
请注意,我删除了月份和日期之间的一个空格。那是因为 AllowWhiteSpaces
的字面意思是:
Specifies that s may contain leading, inner, and trailing white spaces not defined by format.
关于c# - 日期时间解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16984946/