#c#
#c#
Вопрос:
У меня здесь небольшая проблема, и я хотел бы знать, где моя ошибка и как ее исправить.
string preConvDATE = monthCombobox2.Text " " datecombobox2.Text "," "0000";
//lets say the comboboxes contain something like this "January 1";
DateTime DT = DateTime.ParseExact(preConvDATE, "MMMM d, yyyy 00:00:00", System.Globalization.CultureInfo.InvariantCulture);
string strDate = DT.ToString("yyyy-mm-dd");
try
{
//code that inserts strDate to a column in Mysql DB
}
catch
{
//msg
}
почему «0000» для года? потому что я действительно планировал сохранить только месяц и дату, но понял, что могу просто сохранить это в формате datetime с указанием года, а затем при просмотре таблицы я бы просто использовал функции Mysql MONTH () и DATE (), объединенные для просмотра месяца и даты, которые я сохранил из monthCombobox2
и datecombobox2
.
Я также пытался:
Convert.ToDateTime()
Но все равно не сработает.
Как мне правильно проанализировать MMMM d,yyyy
формат даты, чтобы я мог снова преобразовать его в yyyy-mm-dd
и сохранить как datetime
формат в базе данных? Большое вам спасибо 🙂
Комментарии:
1. Зачем вам вообще нужно форматировать ее как строку, чтобы вставить в MySQL? Вы используете параметризованные SQL-запросы, верно? (Вы должны быть)
2. Ваша главная ошибка заключается в том, что вы создаете строку на основе пользовательских настроек (когда вы могли бы просто создать
DateTime
объект, используя его конструктор), а затем пытаетесь разобрать эту строку и переформатировать ее как другую строку. Это очень странный поступок.3.
new DateTime(year, month, day)
?4. да, я пытаюсь сохранить события даты в базе данных. Просто месяц и день.
5. мне действительно жаль, я на самом деле не знаю, что я делаю, я новичок в программировании и пытаюсь учиться самостоятельно, любая коррекция высоко ценится.
Ответ №1:
Как я вижу, вы используете текстовые поля для определения значения месяца и даты, вместо этого вы можете использовать выпадающие списки, которые будут отображать название месяца, но возвращать значения типа 01 для января и так далее. Вам будет легко форматировать форматы даты. Вы не хотите сохранять год, это нормально, вместо установки 0000 вы можете установить текущий год. Теперь проблема в том, что вы не сможете определить, в какой именно день это было (например, воскресенье, понедельник и так далее).
string preConvDATE = monthCombobox2.Text "/" datecombobox2.Text "/" DateTime.Now.Year.ToString();
DateTime DT = DateTime.ParseExact(preConvDATE, "MM/dd/yyyy", System.Globalization.CultureInfo.InvariantCulture);
string strDate = DT.ToString("yyyy-MM-dd");
Я надеюсь, что это решит вашу проблему. Удачного кодирования!
Комментарии:
1. да, это то, что я сделал :), и я больше не разбирал текст, я просто использовал функцию Mysql Monthname () для просмотра номера месяца в качестве названия месяца. спасибо, что нашли время ответить на мой вопрос 🙂