2015-07-13 4 views
-2

Привет Я получаю сообщение об ошибке строки для преобразования даты вот мой сценарийСтрока для преобразования Дата

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 общественности (овальным, как коллекции)

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", чтобы напечатать «Дата» недействительно.

Полезная рука высоко оценена ... спасибо заранее.

+1

Я не понимаю, какую технологию вы используете? Я не вижу, как это может быть asp.net + vb.net и vba одновременно? – sstan

+0

@sstan это vb.net – Jake

+0

Почему вы принимаете дату (dt), а затем конвертируете ее в строку, а затем _back_ на дату? Вы также пытаетесь принять дату (TimeStarted), а затем преобразовать ее на дату. Этот код делает очень странные вещи. Можете ли вы не просто хранить даты непосредственно в коллекции oVal? При работе с датами и временем используйте переменные DateTime и не конвертируйте их в строки. –

ответ

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, и все должно быть хорошо.

+0

извините за это под .AddWithValue («@ PSCStop», CDate (oVal («ofield_stoptime»))) – Jake

+0

И это vb. чистый код, правильно? Затем измените 'CDate', чтобы вместо этого использовать' DateTime.ParseExact (...) '. – sstan

+0

Да, я попробую ваше предложение. – Jake