使用DateTime.ParseExact会抛出格式异常

时间:2015-11-02 17:19:22

标签: vb.net

我知道问题经常被问到,但我无法找到解决问题的方法。我的代码是

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")

这里出了什么问题?

由于

2 个答案:

答案 0 :(得分:2)

两件事(所有信息来自there):

  • 您的格式是"at",但"t"如果是格式说明符,则必须将其转义"a\t"或将其放在文字分隔符"'at'"
  • 之间
  • 具有Kind local("K")的DateTime的"±XX"格式说明符必须为"±XX:XX",因此您必须传递具有该模式的Date字符串或使用{{1格式说明符而不是"zz"

答案 1 :(得分:1)

数据格式有两个问题

  • java.rmi.Remote中的t被解释为at的缩写形式,即AM / PM指示符的第一个字符。你需要转义它来指定它是一个文字字符。
  • 时区偏移的说明符(以小时为单位)为tt,而不是z

所以:

K