如何在C#中将默认git格式解析为DateTime? 根据{{3}}
git的默认日期格式类似于if (i < 3) {
printf("zu kurz\n");
stdin_leeren();
return -4;
void stdin_leeren(void) {
while (getchar() != '\n') {
}
}
。
现在我无法控制输出,这个字符串来自另一个打印日期的工具,我需要解析它。
答案 0 :(得分:1)
我不会将此解析为DateTime
,我会将其解析为DateTimeOffset
,因为它内部有UTC offset值。
为什么呢?因为如果您将其解析为DateTime
,您将获得DateTime
Local
并且可能为不同的计算机生成不同的结果,因为它们可以< / em>有的时区偏移时间。
例如,我在Istanbul,我们使用使用UTC + 02:00的Eastern European Time。如果我使用ParseExact
方法运行代码示例,我会将07/03/2006 18:18:43
作为Local
时间。
为什么呢?因为在2006年7月3日,my timezone was in a daylight saving time是UTC + 03:00。这就是它生成1
小时转发结果的原因。当您将其解析为DateTime
时,这部分会使其模糊不清。
string s = "Mon Jul 3 17:18:43 2006 +0200";
DateTimeOffset dto;
if (DateTimeOffset.TryParseExact(s, "ddd MMM d HH:mm:ss yyyy K",
CultureInfo.InvariantCulture,
DateTimeStyles.None, out dto))
{
Console.WriteLine(dto);
}
现在,DateTimeOffset
为07/03/2006 17:18:43 +02:00
。您仍然可以使用.DateTime
property获取DateTime
部分,但在这种情况下,Kind
将为Unspecified
。
但是,当然,我建议使用Noda Time代替可以解决大部分日期时间的奇怪问题。
答案 1 :(得分:0)
到目前为止,我找到的最佳格式字符串是Mon Jul 3 17:18:43 2006 +0200
。
ddd MMM d HH:mm:ss yyyy K