对字符串到目前的转换和UTC的困惑

时间:2013-03-05 03:14:26

标签: c# asp.net datetime datetime-format

当我这样做时:

string strDate = "2013-03-03T22:58:43.0422158Z";
DateTime dt1 = DateTime.ParseExact(strDate, "o", CultureInfo.InvariantCulture);
DateTime dt2 = DateTime.ParseExact(strDate, "yyyy-MM-ddTHH:mm:ss.fffffffZ", CultureInfo.InvariantCulture);

dt1和dt2都变为{3/3/2013 2:58:43 PM}。我需要它们是字符串中的时间,即3/3/2013 10:58:43 PM

知道如何解析它吗?

2 个答案:

答案 0 :(得分:1)

这是您所在时区的等效时间 。如果您想在Universal(“Zulu”)时间内存储(或显示)时间,请使用

dt1.ToUniversalTime.ToString();

在解析字符串时执行此操作,请使用DateTimeStyles.AdjustToUniversal

DateTime dt1 = DateTime.ParseExact(strDate, 
                                   "o", 
                                   CultureInfo.InvariantCulture, 
                                   DateTimeStyles.AdjustToUniversal);

答案 1 :(得分:0)

试试这个,它“不会考虑你的相对时区”:

DateTime dt2 = DateTime.ParseExact(strDate.TrimEnd(new char [] { 'Z' }), 
                                   "yyyy-MM-ddTHH:mm:ss.fffffff",
                                   CultureInfo.InvariantCulture, 
                                   DateTimeStyles.AssumeLocal);

Other choices