繁体   English   中英

DateTime.ToString格式化并将结果字符串反转回datetime

[英]DateTime.ToString formatting and reversing the resulting string back to the datetime

我有一个系统,其中在每一行的开头以当前日期时间生成日志文件。

例如。

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);

为了防止将来出现问题,我强烈建议您首先使用不带区的区域性生成日志文件输出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM