将“2014年5月29日星期四12:00:00 GMT-0700”转换为DateTime

时间:2014-05-29 23:39:09

标签: asp.net vb.net

我有问题转换" 2014年5月29日星期四12:00:00 GMT-0700"到DateTime

错误: 我从JS中的隐藏字段发送值并返回到后面的代码但是它仍然与错误一起崩溃"字符串未被识别为有效的DateTime"。

Dim FromDate As String = hfDateFromByLocation.Value
Dim ToDate As String = hfDateToByLocation.Value

Dim retValFromDate As DateTime = DateTime.ParseExact(FromDate, "ddd MMM dd HH:mm:ss KKKK yyyy", CultureInfo.InvariantCulture)
Dim retValToDate As DateTime = DateTime.ParseExact(ToDate, "ddd MMM dd HH:mm:ss KKKK yyyy", CultureInfo.InvariantCulture)

2 个答案:

答案 0 :(得分:2)

如果要解决这个问题,我可以使用此格式字符串并使用DateTimeOffset.ParseExact而不是Datetime

“ddd MMM dd yyyy H:mm:ss'GMT'KKKKK”

这是它不喜欢的gmt位。所以我把它包在引号中,你需要一个额外的K作为减号..

更多调查,你可以使用DateTime.ParseExact,但你失去了时区偏移。日期时间是正确的,因为它考虑了偏移量,但你不知道它的偏差是多少。

“ddd MMM dd yyyy H:mm:ss'GMT'zzz”也对我有用。

答案 1 :(得分:1)

它不喜欢" GMT"在字符串里面:

此代码基于Tony Hopkinson的回答:

Imports System.Globalization

Public Class Form1

  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim FromDate As String = "Thu May 29 2014 12:00:00 GMT-0700"
    Dim retValFromDate As Date = DateTime.ParseExact(FromDate, "ddd MMM dd yyyy HH:mm:ss 'GMT'KKKK", System.Globalization.CultureInfo.InvariantCulture)
    MsgBox(retValFromDate.ToString)
  End Sub

End Class