2015-11-02 3 views
0

Я знаю, что вопрос действительно задан часто, но я не могу найти решение моей проблемы. Мой код:Использование исключения формата DateTime.ParseExact throws

Public Function ConvertFacebookDateToNETDate(Instant As String, Format As String) As Date 
    'Dim UTCOffset As New Integer 
    'UTCOffset = Instant.Substring(Instant.IndexOf("UTC+") + 4, 2) 

    Dim MyDateTime As DateTime 
    MyDateTime = New DateTime() 
    MyDateTime = DateTime.ParseExact(Instant, Format, CultureInfo.InvariantCulture) 
    'MyDateTime = MyDateTime.AddHours(-1 * UTCOffset) 
    Return MyDateTime 
End Function 

ConvertFacebookDateToNETDate("Friday, May 9, 2014 at 9:48am UTC+02", "dddd, MMMM d, yyyy at h:mtt UTCK") 

Что случилось, если это неправильно?

Благодаря

ответ

1

Есть две проблемы с форматом данных

  • t в at интерпретируется как короткая форма tt, т.е. первый символ обозначения AM/PM. Вам нужно избегать этого, чтобы указать, что это буквальный символ.
  • Спецификатор для смещения часового пояса в часах составляет z, а не K.

Итак:

ConvertFacebookDateToNETDate("Friday, May 9, 2014 at 9:48am UTC+02", "dddd, MMMM d, yyyy' at 'h:mtt UTCz") 
2

Две вещи (вся информация поступает из there):

  • В вашем формате вы положили "at" но "t" если спецификатор формата, так что вы должны избежать его "a\t" или положить его между буквальным разделитель "'at'"
  • Спецификатор формата "K" для DateTime с Kind local (a "±XX") должен быть "±XX:XX", поэтому вам нужно либо pa сс строки даты с этим шаблоном или использовать "zz" спецификатор формата вместо "K"
Смежные вопросы