字符串到日期转换

时间:2015-07-13 17:27:15

标签: asp.net vb.net

您好我收到了字符串到日期转换的错误 这是我的剧本

 Protected Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click

dim oVal as New Collections
'Time stamp
oVal.Add(DateTime.ParseExact(Request.Cookies("TimeStarted").Value.ToString, "dd-MM-yyyy HH:mm:ss", Nothing), "ofield_starttime")
oVal.Add(dt.ToString("dd-MM-yyyy HH:mm:ss"), "ofield_stoptime")
Savetime(oVal)

并在公共函数saveTime下(oVal as Collection)

Dim sQuery As New SqlCommand
sQuery.CommandType = CommandType.StoredProcedure
sQuery.CommandText = "PSC_Timestamp"

With sQuery.Parameters
    .AddWithValue("@PSCStart", Convert.ToDateTime(oVal("ofield_starttime")))
    .AddWithValue("@PSCStop", CDate(oVal("ofield_stoptime")))

End With
sQuery.Connection = myConnection
If myConnection.State = 1 Then 'check if connection open
    myConnection.Close()
End If
myConnection.Open()
sQuery.ExecuteNonQuery()
myConnection.Close()

我收到此错误

  

从字符串转换" 13-07-2015 13:09:38"输入'日期'无效。

非常感谢助手......提前感谢。

2 个答案:

答案 0 :(得分:0)

问题是您没有指定错误发生的位置。如果是以下行:

DateTime.ParseExact(Request.Cookies("TimeStarted").Value.ToString, "dd-MM-yyyy HH:mm:ss", Nothing)

...然后我觉得有趣的是你将Nothing传递给最终的IFormatProvider provider参数。当您这样做时,它默认为当前文化。您当前的文化是否有可能弄乱数据的解析方式?

为确保行为一致,请尝试传递CultureInfo.InvariantCulture

DateTime.ParseExact(Request.Cookies("TimeStarted").Value.ToString, "dd-MM-yyyy HH:mm:ss", CultureInfo.InvariantCulture)

如果您的错误发生在以下几行:

.AddWithValue("@PSCStart", Convert.ToDateTime(oVal("ofield_starttime")))
.AddWithValue("@PSCStop", CDate(oVal("ofield_stoptime")))

然后,请务必将日期转换逻辑更改为使用DateTime.ParseExact,您应该没问题。

答案 1 :(得分:0)

我发现 - 为了纠正这种情况,我必须将日历格式设置为所需的设置,其格式与我在应用程序中使用的格式相同。这解决了日期转换中的错误问题。