字符串到日期时间转换2013-05-04 13:12:20.123Z

时间:2013-06-07 19:02:58

标签: c# string parsing datetime

我需要将此字符串值(2013-05-04 13:12:20.123Z)输出为此格式的有效日期时间(dd / MM / yyyy HH:mm:ss)。

我尝试了Convert.ToDateTime,DateTime.ParseExact,DateTime.Parse,但它将我的小时改为另一个,实际上我试图了解引擎盖下发生了什么,但我没有!

任何人都可以解释一下编译器对这种格式的理解吗? Convert.ToDateTime输出这种格式的实际值?

解析它的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

日期字符串末尾的Z告诉DateTime.Parse中使用的解析将时间视为UTC。

这意味着当你在本地解析时,你得到的结果是当地时间(这让我觉得你处于-05:00时区。

如果必须DateTime实例中具有完全相同的值,您可以使用ParseExact并将Z视为文字:

DateTime.ParseExact("2013-05-04 13:12:20.123Z", 
                    "yyyy-MM-dd HH:mm:ss.fff'Z'",
                    CultureInfo.InvariantCulture, 
                    DateTimeStyles.RoundTripKind)

请注意,按照the comment的建议,将DateTimeStuyles更改为RoundTripKind

答案 1 :(得分:0)

以正确的格式试用DateTime.ParseExact Method,结果会获得DateTime

然后,您可以再次使用第二种格式调用DateTime.ToString

string input = "2013-05-04 13:12:20.123Z";
string format = "yyyy-MM-dd HH:mm:ss.fffZ";

DateTime dt;
if (DateTime.TryParseExact(input, format, CultureInfo.InvariantCulture,
            DateTimeStyles.AdjustToUniversal ,out dt))
{
    var result = dt.ToString("dd/MM/yyyy HH:mm:ss");
}

输出

  

04/05/2013 13:12:20

答案 2 :(得分:0)

我找到的目标最简单,最短的方法是:

DateTime.Parse("2013-05-04 13:12:20.123Z").ToUniversalTime()
相关问题