DateTime.ToString格式化并将结果字符串反转回日期时间
本文关键字:日期 时间 字符串 结果 ToString 格式化 DateTime | 更新日期: 2023-09-27 18:22:35
我有一个系统,其中生成的日志文件在每行的开头都有当前日期时间。
例如。
LogUtil.Logger(DateTime.ToString("yyyy/MM/dd") + "|" + "My Message Here");
根据区域性的不同,此日志文件可能会在年、月和日之间产生不同的分隔符。
例如。
2015/11/19 or 2015.11.19
我正在编写一个单独的实用程序,该实用程序将得到的日志文件进行解析,并将其他信息发送给第三方。
由于日期格式不同,我如何每次都能正确解析它。
目前正在使用:
DateTime.TryParseExact(line.Substring(0, 10), "yyyy/MM/dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out Date);
此格式说明符仅正确格式化2015/11/19
您可以将多种格式传递给DateTime.TryParseExact
。使用该过载。
DateTime.TryParseExact(line.Substring(0, 10),
new[] {"yyyy/MM/dd", "yyyy.MM.dd"},
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out Date);
这应该适用于两种格式:2015/11/19 or 2015.11.19
如果您可以判断生成给定日志文件所使用的区域性,请使用该区域性而不是InvariantCulture。
var culture = CultureInfo.GetCultureInfoByIetfLanguageTag("tr-TR"); // e.g.
DateTime.TryParseExact(line.Substring(0, 10),
"yyyy/MM/dd",
culture,
DateTimeStyles.None,
out Date);
为了防止将来出现问题,我强烈建议您首先使用不变的区域性来生成日志文件输出。