Как преобразовать дату (из поля ввода даты и времени) в другой формат даты в С#?

У меня есть поле ввода даты и времени, откуда я беру дату и преобразовываю ее в другой формат, мой код для этого

try
{
    DateTime dt = dtiFrom.Value.Date;
    string format = "DD-MM-YYYY"; // Use this format
    MessageBox.Show(dt.ToString(format)); // here its shows result as DD-10-YYYY
    DateTime dt1 = Convert.ToDateTime(dt.ToString(format)); // here Error "The string was not recognized as a valid DateTime. There is an unknown word starting at index 0."
}
catch (Exception ee)
{
    MessageBox.Show(ee.Message, "Error Message!");
}

Я не могу преобразовать дату в соответствии с моим форматом. пожалуйста, может ли кто-нибудь помочь мне в коде или предложить мне какой-нибудь код. заранее спасибо


person Saeed Khan    schedule 30.10.2013    source источник
comment
Кроме того, вам следует изучить возможность использования System.Diagnostics.Trace для регистрации ошибок в будущем. Он дает ту же информацию, но не использует такое уродливое окно сообщений. Если вы когда-нибудь захотите использовать свой продукт в реальной среде, окно сообщений для обработки ошибок — это просто плохой дизайн. Пользователям все равно, что именно пошло не так. Зарегистрируйте ошибку и, если возможно, попробуйте продолжить без даты. Если это невозможно, вы можете предупредить пользователя, что что-то пошло не так.   -  person Nzall    schedule 30.10.2013


Ответы (2)


Ваш формат должен быть следующим:

string format = "dd-MM-yyyy";

Регистр важен при форматировании строк, вам может показаться странным, что месяц используется в верхнем регистре, но это потому, что строчные буквы m и mm используются для представления минут.

Обратите внимание, что причина, по которой ваш вывод отображает DD и YYYY, заключается в том, что любой символ, который не зарезервирован в качестве символа формата, будет выводиться без изменений. Прописные буквы D и Y не зарезервированы, поэтому они отображаются в выводе, так же как - остается неизменным.

Если вы хотите вывести зарезервированные символы формата, вы можете избежать их, используя \.

Полный список значений формата даты и времени см. здесь

person musefan    schedule 30.10.2013

Формат шаблона даты должен быть изменен и лучше использовать TryParseExact вместо использования Convert

DateTime dt = dtiFrom.Value.Date;
string format = "dd-MM-yyyy";
DateTime dt1 = new DateTime();

if (DateTime.TryParseExact(dt , format, null , DateTimeStyles.None, out dt1))
{
  // you can use dt1 here
}
else
{
  MessageBox.Show("Error Massage");
}
person Thilina H    schedule 30.10.2013