Разбор времени без даты в TextBox - PullRequest
4 голосов
/ 12 ноября 2008

Я работаю над приложением табеля рабочего времени, где я хотел бы, чтобы пользователь мог вводить время в текстовых полях, например: 8 a или 8:00 a или аналогичное, как вы можете в Excel.

Теперь, если вы введете дату в TextBox и затем используете DateTime.TryParse, вы можете ввести ее в нескольких форматах (31 января 2007 г .; 31.01.2007; 31/1/2007; 31 января 2007 года и т. Д.) И .NET выяснят это и превратят в DateTime.

Но когда я использую DateTime.TryParse для строки типа «8 a» или «8:00 a», он не понимает этого.

Я знаю, что могу использовать ParseExact, но мне интересно, есть ли более гибкое решение. Я хочу, чтобы .NET получал 8: 00a из «8 a» или «8:00 a» и оставлял компонент даты по умолчанию 1/1/0001.

Ответы [ 4 ]

4 голосов
/ 12 ноября 2008

Вы всегда можете обмануть систему (довольно легко):

DateTime blah = DateTime.Parse("1/1/0001 " + myTimeString);

Я сам сделал нечто подобное.

3 голосов
/ 12 ноября 2008

Давай думать об этом, неважно. Я только что заметил, что если я использую «am» и «pm» вместо «a» и «p», это работает нормально. Предполагается, что сегодняшняя дата вместо значения по умолчанию 1/1/0001, но для моих целей это не проблема.

(Тем не менее, любое достаточно простое решение, чтобы заставить работать "a" и "p" приветствуется.)

3 голосов
/ 12 ноября 2008

Я бы пересмотрел вашу функциональность пользовательского интерфейса и заменил бы ее двумя полями со списком или каким-либо другим способом выбора времени.

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

За исключением этого, Parse. Точное, что вам нужно.

0 голосов
/ 12 ноября 2008

Вы можете использовать проверяющее или проверенное событие, чтобы захватить текст и добавить «m».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...