Строка не распознана как допустимая дата и время

Мой код дает указанную выше ошибку.

Я попытался изменить его по ссылке ниже:

Строка не была распознана как допустимая дата и время "формат дд/мм/гггг"

но это все еще не работает.

Был бы признателен, если бы кто-нибудь мог указать мне в правильном направлении.

Мой код ниже:

foreach (GridViewRow row in GridView1.Rows)

        {

       // int RowIndex = 0;
       // GridViewRow row = (GridViewRow)GridView1.Rows[RowIndex];

            Int32 intresortID = Convert.ToInt32(Request.QueryString["TypeID"]);
            Label dtm = row.FindControl("Label1") as Label;
            Label strRoomType = row.FindControl("Label2") as Label;
            Label strDescription = row.FindControl("Label3") as Label;
            TextBox Qty = row.FindControl("intQtyTextBox") as TextBox;
            TextBox Price = row.FindControl("curPriceTextBox") as TextBox;
            Label intWSCode = row.FindControl("intWSCodeLabel") as Label;

            string connStr = ConfigurationManager.ConnectionStrings["bestandConnectionString"].ConnectionString;
            using (SqlConnection Con = new SqlConnection(connStr))
            {
                Con.Open();
                SqlCommand cmd = new SqlCommand("Update tblAvail set intqty=@intQty, curprice=@curprice where intresortid=@intresortid and dtm=@dtm and strroomtype=@strroomtype", Con);

cmd.Parameters.AddWithValue("@dtm", DateTime.ParseExact(dtm.Text.Trim(), "dd / MM / yyyy", null)); Строка с ошибкой

                cmd.Parameters.AddWithValue("@strroomtype", strRoomType.Text.Trim());
                cmd.Parameters.AddWithValue("@intQty", Qty.Text.Trim());
                cmd.Parameters.AddWithValue("@curPrice", Price.Text.Trim());
                cmd.Parameters.AddWithValue("@intResortID", intresortID);

                cmd.ExecuteNonQuery();
                GridView1.EditIndex = -1;
                DataBind();

            }

В режиме дизайна:

  <ItemTemplate>
        <asp:Label ID="Label1" runat="server" 
                        Text='<%# Eval("Dtm", "{0:dd/MM/yyyy}") %>'></asp:Label>
  </ItemTemplate>

При отладке значение dtm выглядит следующим образом:

{Текст = "18.05.2012"}


person user1270384    schedule 18.05.2012    source источник
comment
Можете ли вы отладить метод и посмотреть, как приходит значение даты, и опубликовать его в своем вопросе?   -  person Scorpion-Prince    schedule 18.05.2012
comment
Попробуйте использовать SqlDateTime.Parse вместо DateTime.ParseExact.   -  person Samy Arous    schedule 18.05.2012
comment
Я получаю сообщение об ошибке, говорящее, что SQLDatetime не существует в этом текущем контексте   -  person user1270384    schedule 18.05.2012
comment
Скорпион-Принц исправил вопрос со значением выше.   -  person user1270384    schedule 18.05.2012
comment
Можете ли вы преобразовать первую строку в дату, а после этого попытаться получить в определенном формате?   -  person Mutant    schedule 18.05.2012
comment
ты имеешь в виду вот так? ДатаВремя дм; dm = Convert.ToDateTime(dtm.Text);   -  person user1270384    schedule 18.05.2012
comment
Кажется немного странным, что вы конвертируете дату и время в строку в метке, а затем пытаетесь преобразовать ее обратно в дату и время вместо того, чтобы просто использовать исходное значение?   -  person James Manning    schedule 18.05.2012
comment
@James Manning: Не могли бы вы помочь мне улучшить мой код.   -  person user1270384    schedule 18.05.2012


Ответы (1)


Пытаться

DateTime.ParseExact(dtm.Text.Trim(), "dd/M/yyyy", System.Globalization.CultureInfo.InvariantCulture)

четыре y вместо 3 и InvariantCulture

person Tim Schmelter    schedule 18.05.2012
comment
Это была опечатка, извиняюсь. Внесли поправки в мой код, чтобы показать правильный путь. все равно выдает ошибку. - person user1270384; 18.05.2012
comment
@ user1270384: я также отредактировал свой ответ и добавил CultureInfo.InvariantCulture - person Tim Schmelter; 18.05.2012
comment
не повезло... все равно выдает ту же ошибку. При наведении курсора в режиме отладки читается как dtm.text ={18/5/2012} - person user1270384; 18.05.2012
comment
@ user1270384: Это будет работать с 18/05/2012. Почему ноль опущен в месяце? Попробуйте вместо этого использовать этот формат: dd/M/yyyy (отредактировал мой ответ) - person Tim Schmelter; 18.05.2012
comment
Я подтвердил в LINQPad, что ответ Тима (DateTime.ParseExact с dd/M/yyyy) отлично работает с обоими значениями месяца в строке 5 и 05. - person James Manning; 18.05.2012