Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中解析默认的git日期格式#_C#_Git_Datetime_String Parsing - Fatal编程技术网

C# 如何在C中解析默认的git日期格式#

C# 如何在C中解析默认的git日期格式#,c#,git,datetime,string-parsing,C#,Git,Datetime,String Parsing,如何将默认git格式解析为C#中的日期时间? 依照 git中的默认日期格式类似于Mon Jul 3 17:18:43 2006+0200 现在我无法控制输出,这些字符串来自另一个打印日期的工具,我需要对其进行分析。到目前为止,我找到的最佳格式字符串是ddd MMM d HH:mm:ss yyyy K DateTime date; DateTime.TryParseExact( gitDateString, "ddd MMM d HH:mm:ss yyyy K", Syst

如何将默认git格式解析为C#中的日期时间? 依照

git中的默认日期格式类似于
Mon Jul 3 17:18:43 2006+0200


现在我无法控制输出,这些字符串来自另一个打印日期的工具,我需要对其进行分析。

到目前为止,我找到的最佳格式字符串是
ddd MMM d HH:mm:ss yyyy K

DateTime date;
DateTime.TryParseExact(
    gitDateString,
    "ddd MMM d HH:mm:ss yyyy K",
    System.Globalization.CultureInfo.InvariantCulture,
    System.Globalization.DateTimeStyles.None,
    out date
);

我不会将它解析为
DateTime
,我会将它解析为,因为它里面有一个值

为什么??因为如果您将其解析为
DateTime
,您将得到
DateTime
作为
Local
,并且它可能会为不同的机器生成不同的结果,因为它们可能具有该时间的时区偏移量

例如,我在,我们使用UTC+02:00。如果我使用
ParseExact
方法运行代码示例,我将获得
07/03/2006 18:18:43
作为
本地时间

为什么??因为在2006年7月3日,也就是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
部分,但在这种情况下,它将是
未指定的


当然,我建议改用DateTime,它可以解决大多数DateTime的奇怪问题。

谢谢,在我的例子中,我不需要非常精确的解析,它是一个团队中的工具,所有人都在同一时区工作。不过,下次我会记住这一点。