2015-11-02 66 views
0

我知道這個問題經常被問到,但是我找不到解決方案來解決我的問題。我的代碼是使用DateTime.ParseExact引發格式異常

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

有兩個問題與所述數據格式

  • att被解釋爲的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本地(a "±XX")需要是"±XX:XX"因此您必須pa SS日期字符串與該模式或使用"zz"格式說明的代替"K"