В C#, если я запускаю этот код, он выводит 05
:
Console.WriteLine(DateTime.Now.ToString("MM"));
Однако, если я запускаю этот код, он выводит May 16
:
Console.WriteLine(DateTime.Now.ToString("M"));
Я ищу формат даты, который будет распечатывать 5
. Как отформатировать однозначный месяц? Чтобы было ясно, это будет 1 цифра для месяцев с 1 по 9 и 2 цифры для месяцев с 10 по 12.
У Microsoft есть отличная документация о том, как форматировать DateTime как строковые значения по адресу https://docs.microsoft.com/en-us/dotnet/standard/base-types/строки пользовательского формата даты и времени.
Параметр, который вы ищете, это M
, который вызывает вызов метода DateTime.Now.ToString("M");
.
Обновлять:
Однако, как указал Ганс Кефинг, это может привести к неожиданным результатам в некоторых ситуациях, которых можно избежать, используя %
в сочетании с M
, как описано в https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings#UsingSingleSpecifiers.
@HansKesting Спасибо, что указали на это! Я видимо не правильно прочитал вопрос.
“%M"
должно работать. См. строки пользовательского формата
Некоторое объяснение:
Чтобы устранить эту двусмысленность, вы можете добавить пробел, который сделает строку пользовательского формата, но также добавит пробел к результирующему значению. Или вы можете добавить %
.
Прямо сейчас (май) DateTime.Now.ToString("%M")
означает «5».
Но M интерпретируется как краткий формат даты, как обнаружил ОП.