2013-12-12 1 views
0

Я пытаюсь преобразовать дату строки в DateTime. Я знаю, что моя строка - это формат ISO8601 со смещенным часовым поясом.DateTime.ParseExact - iso8601 с смещением часового пояса

Я стараюсь это:

DateTime date = DateTime.ParseExact(strDate,"yyyy-MM-dd'T'HH:mm:sszzz", CultureInfo.InvariantCulture); 

Но он не работает в каждом случае.

Он работает для отрицательного смещения: 2013-12-11T14: 36: 00-01: 00

Это does'nt работу (поймать исключение) для положительного смещения: 2013-12-11T14: 36: 00 + 01: 00

Я использую DateTime.ParseExact правильным способом?

Благодарим за помощь.

+0

Уверены ли вы? Оба работают на меня. http://ideone.com/PUXorY –

ответ

1

Строка, которую вы предоставили, работает для меня без каких-либо спецификаций формата.

 DateTime d = DateTime.Parse("2013-12-11T14:36:00+01:00"); 
     Debug.Print(d.ToString()); 
     Debug.Print(d.ToUniversalTime().ToString()); 

Вы видите, в последнем печати, он печатает минус 1 час, как было указано + 1 час часовой пояс.

0

Argh, я не делать URL-кодирование моего символа «+» ......: S

Он используется веб-службы REST, поэтому, когда я посылаю 2013-12 -11T14: 36: 00% 2B01: 00, он работает ..!