Будьте осторожны. Время, которое вы получили назад, находится в UTC. В результате вы можете непреднамеренно позволить локальному часовому поясу повлиять на результат.
Например, один из других ответов предложил этот код:
DateTime dt = DateTime.ParseExact("Fri May 03 15:22:09 +0000 2013",
"ddd MMM dd HH:mm:ss zzz yyyy",
CultureInfo.InvariantCulture);
В результате этого на моем компьютере, который находится в Аризоне (UTC-7), является:
5/3/2013 8:22:09 AM (dt.Kind == DateTimeKinds.Local)
Хотя это правильный момент в мое местное время, это не то, что мне было дано, и это, вероятно, не то, что вы ожидаете, если не обратить пристальное внимание на свойство .Kind
.
Вы можете вместо этого сделать следующее:
DateTime dt = DateTime.ParseExact("Fri May 03 15:22:09 +0000 2013",
"ddd MMM dd HH:mm:ss zzz yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.AdjustToUniversal);
Это возвращает:
5/3/2013 3:22:09 PM (dt.Kind == DateTimeKinds.Utc)
Что лучше соответствует тому, что вы начали с.
Теперь это предполагает, что значения, возвращаемые из Twitter, всегда будут UTC. Кажется, это так, according to their FAQ. Но можно утверждать, что, поскольку нам присваивается смещение, может быть более правильным использовать это смещение, как предусмотрено. Если смещение когда-либо изменяется, мы не хотим, чтобы наш код прерывался. Поэтому более целесообразно использовать класс DateTimeOffset
.
DateTimeOffset dto = DateTimeOffset.ParseExact("Fri May 03 15:22:09 +0000 2013",
"ddd MMM dd HH:mm:ss zzz yyyy",
CultureInfo.InvariantCulture);
В результате которого:
5/3/2013 3:22:09 PM +00:00
Что делать поисковые запросы на ту же тему на SO сказать? – I4V
Попробуйте [DateTime.ParseExact] (http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx). –