Страницы

Поиск по вопросам

среда, 3 апреля 2019 г.

Задать номер месяца по его названию. C#

Имеется ComboBox, который хранит месяца года в текстовом формате. Как можно записать номер месяца в DataTime?

Там где происходит добавление месяцев в список, нужный мне номер месяца сохранить сразу не могу, так как нужен выбор пользователя.
for (int i = 1; i <= 12; i++) { cmbMonth.Items.Add(now.ToString("MMMM")); now = now.AddMonths(1); cmbMonth.Text = DateTime.Now.ToString("MMMM"); }
Нужно из cmbMonth.Text получить название месяца, что бы записать полноценную дату выбранную пользователем. Но так-как месяца хранятся в виде текста, возникли проблемы. Как можно решить? (Писать цикл с месяцами и их номерами не вариант, так как текст месяца в ComboBox зависит от языка системы)


Ответ

Для перевода из String в DataTime есть пара хороших методов Parse и ParseExact. Вот второй и подойдет для данной задачи!
Суть следующая - Вы ему даете 3 аргумента:
string, где есть значения связанные со временем (будь то время, дата, месяц или еще что). Некая маска, по которой метод ParseExact поймет, что находится в пункте 1. Культура пользователя или указанная заранее.
Напишу пример к вашей задаче:
var m = "Декабрь"; DateTime dd = DateTime.ParseExact(m, "MMMM", System.Globalization.CultureInfo.CurrentCulture); Console.WriteLine(dd);
Как видим я задал 3 параметра - месяц (декабрь), маска (полный формат месяца) и культура (текущая культура пользователя).
Результатом программа выдаст:
01.12.2018 0:00:00
Надеюсь это решит вашу проблему. Удачи!

Комментариев нет:

Отправить комментарий