Преобразовать строку в DateTime с ведущим нулем C#

У меня свидание в формате 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 ответа

Решение

Вы должны понимать, что 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 разные strings.

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

Console.WriteLine(dateTime.toString("dd/MM/yyyy")); // prints leading zeroes!

Прежде всего, ваша строка 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 Формат содержит ведущий ноль.

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

dt.ToString("dd/MM/yyyy");
Другие вопросы по тегам