Преобразовать строку в DateTime с ведущим нулем C # - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть дата и время в формате MM/dd/yyyy:

string datetime = "05/16/2018"

Теперь, согласно требованию, мне нужно преобразовать это string в DateTime.Всякий раз, когда я делаю это, он удаляет ведущий ноль.

DateTime dt = DateTime.Parse(datetime, Globalization.CultureInfo.InvariantCulture, Globalization.DateTimeStyles.None)

Здесь, он дает вывод как 5/16/2018, но мне нужно это как 05/16/2018.Итак, как мне достичь этого результата?

Ответы [ 3 ]

0 голосов
/ 13 декабря 2018

Прежде всего, ваш формат строки DateTime (MM/dd/yyyy) сбивает с толку!Это даст вводящее в заблуждение значение для строкового значения DataTime, например "05/08/2018".Таким образом, вы должны использовать ParseExact вместо Parse следующим образом:

DateTime dt = DateTime.ParseExact(datetime,"MM/dd/yyyy", CultureInfo.InvariantCulture);

Это дает выходные данные как 16.05.2008, но мне нужно это как 16.05.2008.Итак, как мне достичь этого результата?

Вы можете просто добиться этого, меняя формат вашей машины DateTime на лидирующий ноль DataTime формат!потому что по умолчанию C # DateTime принимает формат машины Datatime.

Ну, я также проверил с помощью приложения Test Console, чтобы убедиться, что ваш преобразованный DateTime может содержать начальный нольбез преобразования в строку, если формат вашего компьютера DateTime содержит начальный ноль.

0 голосов
/ 13 декабря 2018

Вы должны понимать, что DateTime - это просто объект, представляющий момент времени.Он не хранит информацию о том, как он отформатирован.Ниже приведены одинаковые DateTime, только в разных форматах:

05/16/2018
5/16/2018

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

Это похоже на то, как intведет себя.Он также «удалит ваши ведущие нули»:

int a = 05;
Console.WriteLine(a); // just prints "5".

Поскольку 05 и 5 одинаковы int, что касается int.

То, будут ли добавлены начальные нули в DateTime, зависит от того, как вы его отформатируете.Они появляются только тогда, когда вы конвертируете DateTime в строку.05/16/2018 и 5/16/2018 отличаются string с.

Если вы хотите, чтобы начальные нули, просто укажите формат даты как dd/MM/yyyy всякий раз, когда вы хотите вывести его:

Console.WriteLine(dateTime.toString("dd/MM/yyyy")); // prints leading zeroes!
0 голосов
/ 13 декабря 2018

"5/16/2018" - строковое представление значения DateTime.Если вы хотите вывести его с начальным нулем, вы можете использовать пользовательский формат:

dt.ToString("dd/MM/yyyy");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...