Форматирование дат
Пользовательские и стандартные форматы.
«Форматирование дат» — бесплатный урок C# Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 4 уроков всего.
Зачем форматировать даты
Необработанное значение DateTime выводится с использованием стандартной культуры Вашего компьютера, что может быть нежелательно.
Форматирование позволяет точно управлять отображением даты: 2024-03-05, 05/03/2024 или Tuesday, March 5. В C# доступны стандартные и пользовательские строки формата.
ToString с шаблоном
Самый гибкий инструмент — ToString с пользовательской строкой формата. Каждая буква обозначает часть даты.
Например, "yyyy-MM-dd" создаёт представление «год-месяц-день», которое удобно сортировать и легко читать.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5);
Console.WriteLine(d.ToString("yyyy-MM-dd"));
}
}Буквы года, месяца и дня
Регистр букв формата имеет значение. yyyy означает четырёхзначный год, MM — двузначный месяц, а dd — двузначный день.
Используйте заглавную M для месяца, а строчная m означает минуты. Их смешение — распространённая ошибка начинающих.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5);
Console.WriteLine(d.ToString("dd/MM/yyyy"));
}
}Часы, минуты и секунды
Для части, обозначающей время, HH задаёт 24-часовой формат, mm — минуты, а ss — секунды.
Строчные hh задают 12-часовой формат и используются вместе с tt для обозначения AM или PM.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5, 14, 30, 0);
Console.WriteLine(d.ToString("HH:mm:ss"));
}
}12-часовой формат с AM/PM
Чтобы вывести время в удобном 12-часовом формате, объедините hh:mm с tt. Спецификатор tt выводит AM или PM.
Так время 14:30 превращается в 02:30 PM, что многим читателям понятнее, чем значение в 24-часовом формате.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5, 14, 30, 0);
Console.WriteLine(d.ToString("hh:mm tt"));
}
}Названия месяцев и дней
Вместо чисел можно выводить названия. MMMM задаёт полное название месяца, а MMM — сокращённое.
Для дней недели dddd задаёт полное название дня, а ddd — сокращение.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5);
Console.WriteLine(d.ToString("dddd, MMMM dd"));
}
}Стандартные спецификаторы формата
Помимо пользовательских шаблонов, C# предлагает короткие стандартные коды. "d" — краткая дата, "D" — полная дата, "t" — краткое время, а "T" — полное время.
Они зависят от текущей культуры, поэтому точный вид может различаться в разных регионах.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5, 14, 30, 0);
Console.WriteLine(d.ToString("D"));
}
}Краткие и подробные вспомогательные методы
Также есть удобные методы. ToShortDateString и ToShortTimeString дают краткий вывод, а ToLongDateString записывает дату полностью.
Они удобны для быстрого использования, но для полного контроля лучше задавать строку формата явно.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5);
Console.WriteLine(d.ToShortDateString());
}
}Форматирование в интерполяции
Внутри интерполированной строки формат можно указать после двоеточия. Запись {d:yyyy-MM-dd} форматирует значение непосредственно в месте его подстановки.
Это позволяет сохранять код коротким и понятным при формировании сообщений.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5);
Console.WriteLine($"Date: {d:yyyy-MM-dd}");
}
}Вывод, не зависящий от региональных настроек
Для данных, которые Вы сохраняете или передаёте между системами, используйте форматирование с помощью CultureInfo.InvariantCulture, чтобы результат никогда не зависел от региональных настроек пользователя.
Это предотвращает неожиданности, когда один и тот же код выводит разные результаты на другом компьютере.
using System;
using System.Globalization;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5);
Console.WriteLine(d.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));
}
}Формат обратного преобразования
Стандартный формат "o" (обратного преобразования) выводит строку в формате ISO 8601, сохраняя все детали, включая доли секунды.
Это самый надёжный вариант, когда дату позже нужно снова разобрать без потери точности.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5, 14, 30, 0);
Console.WriteLine(d.ToString("o"));
}
}Быстрая проверка
Вам нужно вывести месяц двумя цифрами в пользовательской строке формата. Какой спецификатор выбрать?
Итоги
Форматировать даты можно с помощью ToString и пользовательских шаблонов, таких как yyyy, MM, dd, HH и mm.
Стандартные коды, например "d" и "D", зависят от культуры, а InvariantCulture и формат обратного преобразования "o" обеспечивают стабильный вывод в разных системах.
Часто задаваемые вопросы
Урок «Форматирование дат» бесплатный?
Да — полный текст урока «Форматирование дат» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 4 уроков всего.
Чему я научусь в уроке «Форматирование дат»?
Пользовательские и стандартные форматы. Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C# Academy?
Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Форматирование дат»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C# Academy?
Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Создание DateTimes
- Форматирование дат
- TimeSpan и длительности
- Арифметика дат