Преобразовать строку в 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
разные string
s.
Если вы хотите, чтобы начальные нули, просто укажите формат даты, как 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");