суббота, 6 августа 2011 г.

Форматирование даты и времени на C#


В C# для работы с датами и временем используется тип DateTime. Существует еще тип DateTimeOffset. Для преобразования даты/времени в строку у типа DateTime есть 4 переопределения метода ToString:
ToString(string format, IFormatProvider provider);
ToString(IFormatProvider provider);
ToString(string format);
ToString(),
где format -- строка форматирования даты/времени. Строка format может состоять из 1 символа, тогда она считается стандартным форматом даты времени, или из нескольких, тогда она считается строкой настраиваемого формата даты и времени.
Существуют следующие стандартные форматы даты и времени:
d -- Короткий шаблон даты.
D -- Полный шаблон даты.
f -- Полный шаблон даты и времени (короткий шаблон времени).
F -- Полный шаблон даты и времени (полный шаблон времени).
g -- Общий шаблон даты и времени (короткий шаблон времени).
G -- Общий шаблон даты и времени (полный шаблон времени).
M, m -- Шаблон дней месяца.
O, o -- Шаблон обратного преобразования даты и времени.
R, r -- Шаблон RFC1123.
s -- Сортируемый шаблон времени и даты.
t -- Короткий шаблон времени.
T -- Полный шаблон времени.
u -- Универсальный сортируемый шаблон времени и даты.
U -- Универсальный полный шаблон даты и времени.
Y, y -- Шаблон месяца года.
Для того чтобы получить нестандартную строку времени, например в таком виде 07:27:15, параметр format должен быть строкой настраиваемого формата даты и времени, и иметь значение "hh:mm:ss". В параметре format допустимы следующие спецификаторы:
d -- день месяца от 1 до 31;
dd -- день месяца от 01 до 31;
ddd -- день недели, сокращенно (Пн, Вт и т. д.);
dddd -- день недели, полностью (понедельник и т. д.);
h -- часы от 1 до 12;
hh -- часы от 01 до 12;
H -- часы от 0 до 23;
HH -- часы от 00 до 23;
m -- минуты от 0 до 59;
mm -- минуты от 00 до 59;
M -- месяц от 1 до 12;
MM -- месяц от 01 до 12;
MMM -- месяц, сокращенно;
MMMM -- месяц, полностью;
s -- секунды от 0 до 59;
ss -- секунды от 00 до 59;
y -- год от 0 до 99;
yy -- год от 00 до 99;
yyy -- год от 000 до 999;
yyyy -- год от 0000 до 9999;
yyyyy -- год от 00000 до 99999;
t -- первый символ от AM/PM;
tt -- AM/PM;
z -- смещение в часах от UTC (всемирного координатного времени, приближенно совпадает со временем по Гринвичу);
zz -- смещение в часах от UTC,с нулями в начале для значений из одной цифры;
zzz -- смещение в часах и минутах от UTC, например 6/15/2009 1:45:30 PM -07:00 -> -07:00;
g или gg -- эпоха или эра;
f, ff, fff, ffff, fffff, ffffff, fffffff -- доли секунды;
F, FF, FFF, FFFF, FFFFF, FFFFFF, FFFFFFF -- доли секунды с нулями в начале;
: -- разделитель компонентов времени;
/ -- разделитель компонентов даты;
"string" или 'string' -- любая строка, копируется в результат как есть;
% -- отделяет символ спецификатора, от символа стоящего перед ним. Например "dd" для 8 марта возвратит "08", а "d%d" возвратит 88;
\ -- escape-символ, отменяет действие спецификатора;
др. символы -- копируется в результирующую строку без изменений.
provider -- обычно задается объектом класса CultureInfo - представляет язык и региональные параметры. Если provider не задан или равен null, то за него принимается CultureInfo.CurrentCulture.

Для форматирования дат и времени также может быть использован метод string.Format(string format, params object args).


* Про форматирование даты и времени в C# можно еще почитать в MSDN.

Комментариев нет:

Отправить комментарий