saeed rajabi Ответов: 2

Как я могу преобразовать строку в дату?


Привет, я посетил другую тему, но не смог решить свою проблему.
у меня есть несколько полей в моей зарезервированной таблице (reservedID,roomID,UserId,strat_date, end_date).
я зарезервировал место за этим столом.
когда я хочу забронировать другой номер, я должен проверить start_date и end_date с двумя датами, которые пользователь вставил в datepicker.
я получаю эти (две)даты из querystring (string type) и не могу преобразовать их в datetime для преобразования.
мои поля start_date и end_date являются строковыми.
я получаю их от БД ...



protected void Button1_Click(object sender, EventArgs e)
{
    string room_id = Request.QueryString["ri"];
    int room_id2 = Convert.ToInt32(room_id);
    string from = Request.QueryString["from"];
    string to = Request.QueryString["to"];
    string name = TextBox1.Text;
    string email = TextBox2.Text;
    if (!String.IsNullOrEmpty(room_id))
    {
        if (!String.IsNullOrEmpty(from))
        {
            if (!String.IsNullOrEmpty(to))
            {
                if (!String.IsNullOrEmpty(name))
                {
                    if (!String.IsNullOrEmpty(email))
                    {
                        if (new EmailAddressAttribute().IsValid(email))
                        {
                            List<DAL.project.RESERVED> reserved = BLL.project.DataProvider.reserved_room(room_id2);
                            int status = 0;
                            foreach(DAL.project.RESERVED rsd in reserved)
                            {
                                DateTime sd = Convert.ToDateTime(rsd.START_DATE);
                                DateTime ed = Convert.ToDateTime(rsd.END_DATE);
                                if ((sd <= from2 && ed >= from2) || (sd <= to2 && ed >= to2))
                                {
                                    status = 1;
                                    break;
                                }
                            }
                            Label3.Text = Convert.ToString(status);
                        }
                        else
                        {
                            Label3.Text = "ایمیل وارد شده اشتباه است.";
                        }
                    }
                    else
                    {
                        Label3.Text = "پست الکترونیکی را وارد نکرده اید.";
                    }
                }
                else
                {
                    Label3.Text = "نام را وارد نکرده اید.";
                }
            }
            else
            {
                Label3.Text = "تاریخ را وارد نکرده اید.";
                Response.AddHeader("REFRESH", "3;search.aspx");
            }
        }
        else
        {
            Label3.Text = "تاریخ را وارد نکرده اید.";
            Response.AddHeader("REFRESH", "3;search.aspx");
        }
    }
    else
    {
        Label3.Text = "اجازه ی دسترسی به این صفحه را ندارید. بعد از چند ثانیه به صفحه ی جستجو هدایت می شوید.";
        Response.AddHeader("REFRESH", "3;search.aspx");
    }
}


Что я уже пробовал:

я так старался, но не мог обратиться :
строки = запрос.Файл querystring["от"];
строки = запрос.Файл querystring["к"];

и

РСД.strat_date , ОСБ.конечная_дата



до даты и времени для предоставления сравнить

Patrice T

Покажите строки, которые вы пытаетесь преобразовать в дату.

saeed rajabi

ждать

saeed rajabi

строки = запрос.Файл querystring["от"];
строки = запрос.Файл querystring["к"];

Patrice T

Нет Я хочу что-то вроде
от= "20160713"

saeed rajabi

from = " ۱۳۹۵ / ۰۴ / ۰۱";

saeed rajabi

я получаю от и до из querystring (before - > Я получаю их из datepicker)

saeed rajabi

mydatepicker-это персидский язык

Patrice T

то, что вы получаете, - это не дата, закодированная обычным способом.
Вы должны проверить, что вы получаете в переменной.

Maciej Los

Непонятно!

2 Ответов

Рейтинг:
6

Vignesh Mani

Привет, где бы вы ни получили дату, сначала дата преобразуется в строку, а затем строка в дату, которую вы можете преобразовать.
Некоторое время вы хранили дату в объекте, а затем из данных объекта не можете преобразовать непосредственно в дату, поэтому сначала преобразуйте строку, а затем преобразуйте в формат данных.


Рейтинг:
20

Sujith Karivelil

Я думаю

Convert.ToDateTime
не будет эффективным методом преобразования строки в DateTime. Так как он выбрасывает FormatException, если преобразование не удалось, поэтому я настоятельно рекомендую вам использовать
DateTime.TryParseExact
который имеет внутренний механизм обработки исключений, так что он будет давать возвращаемое значение для указания состояния преобразования и вывода в переменную out. Рассмотрим следующий код:

DateTime inDate;
string formatString="MM/dd/yyyy hh:mm:ss";
bool conversionResult = DateTime.TryParseExact(rsd.START_DATE, formatString, CultureInfo.InvariantCulture, DateTimeStyles.None, out inDate)
if(!conversionResult) 
{
  Console.WriteLine("Invalid Input");
}


Обратите внимание: formatString и формат входных данных должны совпадать.


Karthik_Mahalingam

5

Sujith Karivelil

клевый

Karthik_Mahalingam

:)