Разбор строки типа «03/2020» в переменную DateTime - PullRequest
0 голосов
/ 01 октября 2018

Мне нужно проанализировать строку, которая всегда выглядит как 03/2020 (таким образом, формат MM/yyyy), в переменную DateTime.

Как мне добиться ее наиболее правильным способом?(Без разбиения строки на подстроки)

Я уже нашел функцию DateTime.ParseExact, но меня смущает третий параметр (информация о формате для конкретной культуры).

Является ли DateTime.ParseExact путь или есть ли лучшая функция / способ достижения цели?

var inputString = "03/2020";
var inputStringFormat = @"MM/yyyy";

// var inputStringAsDateTime = ???

Редактировать 1

В качестве дополнительной информации я должен сказать, чтострока (inputString) считывается со штрих-кода.Так что разделителем в нем всегда является /.

Тим Шмельтер объяснил в своем ответе, как маскировать такие разделители.Похоже, я должен изменить мою inputStringFormat переменную на:

var inputStringFormat = @"MM'/'yyyy";

Ответы [ 3 ]

0 голосов
/ 01 октября 2018

Обычно я использую метод ToDateTime класса Convert.У меня проверено это, оно работает.

string inputString = "03/2020";
DateTime datetime = Convert.ToDateTime(inputString));

Это даст вывод, например, 3/1/2020 12:00:00 AM означает, что он даст вам вывод в соответствии с датой вашей системыформат.

0 голосов
/ 01 октября 2018

С таким простым форматом даты вы можете использовать

var inputArr = inputString.split(@"/");
var inputStringAsDateTime = new DateTime(inputArr[0], inputArr[1], 1);

, однако для культуры вы можете использовать константу

CultureInfo.InvariantCulture
0 голосов
/ 01 октября 2018

Если вам подходит первый день месяца, вы можете использовать DateTime.ParseExact:

var d = DateTime.ParseExact(inputString, inputStringFormat, CultureInfo.InvariantCulture);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...