Поделиться через


DateTimeFormatter Класс

Определение

Форматирует даты и время.

public ref class DateTimeFormatter sealed
/// [Windows.Foundation.Metadata.Activatable(Windows.Globalization.DateTimeFormatting.IDateTimeFormatterFactory, 65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class DateTimeFormatter final
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(Windows.Globalization.DateTimeFormatting.IDateTimeFormatterFactory, 65536, "Windows.Foundation.UniversalApiContract")]
class DateTimeFormatter final
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Globalization.DateTimeFormatting.IDateTimeFormatterFactory), 65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class DateTimeFormatter
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Globalization.DateTimeFormatting.IDateTimeFormatterFactory), 65536, "Windows.Foundation.UniversalApiContract")]
public sealed class DateTimeFormatter
function DateTimeFormatter(yearFormat, monthFormat, dayFormat, dayOfWeekFormat, hourFormat, minuteFormat, secondFormat, languages, geographicRegion, calendar, clock)
Public NotInheritable Class DateTimeFormatter
Наследование
Object Platform::Object IInspectable DateTimeFormatter
Атрибуты

Требования к Windows

Семейство устройств
Windows 10 (появилось в 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (появилось в v1.0)

Примеры

Используйте класс DateTimeFormatter для форматирования даты.

// Format a date via a string template. Note that the order specifed in the string pattern does
// not determine the order of the parts of the formatted string. The user's language and region
// preferences will determine the pattern of the date returned based on the specified parts.

var formatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("month day dayofweek year");
DateTime dateToFormat = DateTime.Now;
var mydate = formatter.Format(dateToFormat);

Грамматика шаблоновСледующая грамматика определяет, что принимается для шаблона:

<pattern> ::= [<literal-text>] <datetime-pattern> [<literal-text>] |
              [<literal-text>] <datetime-pattern> <pattern>

<literal-text> ::= <literal-character>+

<literal-character> ::= [^{}] | "{openbrace}" | "{closebrace}"

<datetime-pattern> ::= <date-pattern> | <time-pattern>

<date-pattern> ::= <era> | <year> | <month> | <day> | <dayofweek>

<time-pattern> ::= <period> | <hour> | <minute> | <second> | <timezone>

<era> ::= "{era.abbreviated" [<ideal-length>] "}"

<year> ::= "{year.full" [<ideal-length>] "}" |
           "{year.abbreviated" [<ideal-length>] "}"

<month> ::= "{month.full}" |
            "{month.solo.full}" |
            "{month.abbreviated" [<ideal-length>] "}"
            "{month.solo.abbreviated" [<ideal-length>] "}"
            "{month.integer" [<ideal-length>] "}"

<dayofweek> ::= "{dayofweek.full}" |
                "{dayofweek.solo.full}" |
                "{dayofweek.abbreviated" [<ideal-length>] "}"
                "{dayofweek.solo.abbreviated" [<ideal-length>] "}"

<day> ::= "{day.integer" [<ideal-length>] "}"

<period> ::= "{period.abbreviated" [<ideal-length>] "}"

<hour> ::= "{hour.integer" [<ideal-length>] "}"

<minute> ::= "{minute.integer" [<ideal-length>] "}"

<second> ::= "{second.integer" [<ideal-length>] "}"

<timezone> ::= "{timezone.full}" |
                "{timezone.abbreviated" [<ideal-length>] "}"

<ideal-length> ::= "(" <non-zero-digit> ")"

<non-zero-digit> ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

Грамматика шаблонаСледующая грамматика определяет, что принимается для шаблона:

<template> ::= <opt-whitespace> <date> <opt-whitespace> |
               <opt-whitespace> <time> <opt-whitespace> |
               <opt-whitespace> <specific-date> <whitespace> <time> <opt-whitespace> |
               <opt-whitespace> <time> <whitespace> <specific-date> <opt-whitespace> |
               <opt-whitespace> <relative-date> <whitespace> <time> <opt-whitespace> |
               <opt-whitespace> <time> <whitespace> <relative-date> <opt-whitespace>

<opt-whitespace> ::= [<whitespace>] 

<whitespace> ::= " "+ 

<date> ::= <year> | <month> | <day> | <month-year> | <relative-date> | <specific-date>

<relativedate> ::= <dayofweek> | <month-day> | <relative-longdate>

<specificdate> ::= <shortdate> | <longdate>

<month-day> ::= <month> <whitespace> <day> |
                <day> <whitespace> <month>

<relative-longdate> ::= <month> <whitespace> <day> <whitespace> <dayofweek> |
                        <month> <whitespace> <dayofweek> <whitespace> <day> |
                        <day> <whitespace> <month> <whitespace> <dayofweek> |
                        <day> <whitespace> <dayofweek> <whitespace> <month> |
                        <dayofweek> <whitespace> <day> <whitespace> <month> |
                        <dayofweek> <whitespace> <month> <whitespace> <day>

<month-year> ::= <month> <whitespace> <year> |
                 <year> <whitespace> <month>


<shortdate> ::= "shortdate" |
                <month> <whitespace> <day> <whitespace> <year> |
                <month> <whitespace> <year> <whitespace> <day> |
                <day> <whitespace> <month> <whitespace> <year> |
                <day> <whitespace> <year> <whitespace> <month> |
                <year> <whitespace> <day> <whitespace> <month> |
                <year> <whitespace> <month> <whitespace> <day>


<longdate> ::= "longdate" |
               <year> <whitespace> <month> <whitespace> <day> <whitespace> <dayofweek> |
               <year> <whitespace> <month> <whitespace> <dayofweek> <whitespace> <day> |
               <year> <whitespace> <day> <whitespace> <month> <whitespace> <dayofweek> |
               <year> <whitespace> <day> <whitespace> <dayofweek> <whitespace> <month> |
               <year> <whitespace> <dayofweek> <whitespace> <day> <whitespace> <month> |
               <year> <whitespace> <dayofweek> <whitespace> <month> <whitespace> <day> |
               <month> <whitespace> <year> <whitespace> <day> <whitespace> <dayofweek> |
               <month> <whitespace> <year> <whitespace> <dayofweek> <whitespace> <day> |
               <day> <whitespace> <year> <whitespace> <month> <whitespace> <dayofweek> |
               <day> <whitespace> <year> <whitespace> <dayofweek> <whitespace> <month> |
               <dayofweek> <whitespace> <year> <whitespace> <day> <whitespace> <month> |
               <dayofweek> <whitespace> <year> <whitespace> <month> <whitespace> <day> |
               <month> <whitespace> <day> <whitespace> <year> <whitespace> <dayofweek> |
               <month> <whitespace> <dayofweek> <whitespace> <year> <whitespace> <day> |
               <day> <whitespace> <month> <whitespace> <year> <whitespace> <dayofweek> |
               <day> <whitespace> <dayofweek> <whitespace> <year> <whitespace> <month> |
               <dayofweek> <whitespace> <day> <whitespace> <year> <whitespace> <month> |
               <dayofweek> <whitespace> <month> <whitespace> <year> <whitespace> <day> |
               <month> <whitespace> <day> <whitespace> <dayofweek> <whitespace> <year> |
               <month> <whitespace> <dayofweek> <whitespace> <day> <whitespace> <year> |
               <day> <whitespace> <month> <whitespace> <dayofweek> <whitespace> <year> |
               <day> <whitespace> <dayofweek> <whitespace> <month> <whitespace> <year> |
               <dayofweek> <whitespace> <day> <whitespace> <month> <whitespace> <year> |
               <dayofweek> <whitespace> <month> <whitespace> <day> <whitespace> <year>

<time> ::= <hour> | 
           <hour> <whitespace> <timezone> |
           <timezone> <whitespace> <hour> |
           <shorttime> |
           <longtime>

<shorttime> ::= "shorttime" |
                <hour> <whitespace> <minute> |
                <minute> <whitespace> <hour> |
                <timezone> <whitespace> <hour> <whitespace> <minute> |
                <timezone> <whitespace> <minute> <whitespace> <hour> |
                <hour> <whitespace> <timezone> <whitespace> <minute> |
                <minute> <whitespace> <timezone> <whitespace> <hour> |
                <hour> <whitespace> <minute> <whitespace> <timezone> |
                <minute> <whitespace> <hour> <whitespace> <timezone>

<longtime> ::= "longtime" |
               <hour> <whitespace> <minute> <whitespace> <second> |
               <hour> <whitespace> <second> <whitespace> <minute> |
               <minute> <whitespace> <hour> <whitespace> <second> |
               <minute> <whitespace> <second> <whitespace> <hour> |
               <second> <whitespace> <minute> <whitespace> <hour> |
               <second> <whitespace> <hour> <whitespace> <minute> |
               <timezone> <whitespace> <hour> <whitespace> <minute> <whitespace> <second> |
               <timezone> <whitespace> <hour> <whitespace> <second> <whitespace> <minute> |
               <timezone> <whitespace> <minute> <whitespace> <hour> <whitespace> <second> |
               <timezone> <whitespace> <minute> <whitespace> <second> <whitespace> <hour> |
               <timezone> <whitespace> <second> <whitespace> <minute> <whitespace> <hour> |
               <timezone> <whitespace> <second> <whitespace> <hour> <whitespace> <minute> |
               <hour> <whitespace> <timezone> <whitespace> <minute> <whitespace> <second> |
               <hour> <whitespace> <timezone> <whitespace> <second> <whitespace> <minute> |
               <minute> <whitespace> <timezone> <whitespace> <hour> <whitespace> <second> |
               <minute> <whitespace> <timezone> <whitespace> <second> <whitespace> <hour> |
               <second> <whitespace> <timezone> <whitespace> <minute> <whitespace> <hour> |
               <second> <whitespace> <timezone> <whitespace> <hour> <whitespace> <minute> |
               <hour> <whitespace> <minute> <whitespace> <timezone> <whitespace> <second> |
               <hour> <whitespace> <second> <whitespace> <timezone> <whitespace> <minute> |
               <minute> <whitespace> <hour> <whitespace> <timezone> <whitespace> <second> |
               <minute> <whitespace> <second> <whitespace> <timezone> <whitespace> <hour> |
               <second> <whitespace> <minute> <whitespace> <timezone> <whitespace> <hour> |
               <second> <whitespace> <hour> <whitespace> <timezone> <whitespace> <minute> |
               <hour> <whitespace> <minute> <whitespace> <second> <whitespace> <timezone> |
               <hour> <whitespace> <second> <whitespace> <minute> <whitespace> <timezone> |
               <minute> <whitespace> <hour> <whitespace> <second> <whitespace> <timezone> |
               <minute> <whitespace> <second> <whitespace> <hour> <whitespace> <timezone> |
               <second> <whitespace> <minute> <whitespace> <hour> <whitespace> <timezone> |
               <second> <whitespace> <hour> <whitespace> <minute> <whitespace> <timezone>

<year> ::= "year" | "year.full" | "year.abbreviated"

<month> ::= "month" | "month.full" | "month.abbreviated" | "month.numeric"

<day> ::= "day"

<dayofweek> ::= "dayofweek" | "dayofweek.full" | "dayofweek.abbreviated"

<hour> ::= "hour"

<minute> ::= "minute"

<second> ::= "second"

<timezone> ::= "timezone" | "timezone.full" | "timezone.abbreviated"

Комментарии

Примечание

Этот API обновляется для поддержки изменения японской эры за май 2019 г. Если приложение поддерживает японский календарь, убедитесь, что он правильно обрабатывает новую эру. Дополнительные сведения см. в статье Подготовка приложения к изменениям японской эпохи .

Примечание

Если приложение передает языковые теги, используемые в этом классе, в любые функции поддержки национальных языков , оно должно сначала преобразовать теги, вызвав ResolveLocaleName.

Некоторые конструкторы для DateTimeFormatter принимают строковый параметр formatTemplate , указывающий запрошенные компоненты для форматирования. Этот параметр может быть шаблоном формата или шаблоном формата. Шаблоны форматирования удобны для использования и предоставляют форматирование, типичное для указанного языка, часов и календаря. Шаблоны форматирования обеспечивают больший контроль над выходными данными, чем шаблоны форматирования. Если требуется нестандартное форматирование, используйте шаблоны форматирования вместо шаблонов.

В шаблоне формата указываются компоненты (время, дата, день недели и т. д.), которые необходимо включить в форматированные выходные данные. Форматировщик форматирует компоненты в соответствии с указанным языком, часами и календарем. Порядок компонентов в шаблоне не имеет значения; модуль форматирования упорядочивает компоненты в соответствии с порядком, показанным на языке шаблонов форматирования ниже.

В следующей таблице перечислены некоторые часто используемые шаблоны. В шаблонах с несколькими компонентами компонент может быть любым из поддерживаемых вариантов компонентов, а компоненты могут находиться в любом порядке. Например, поддерживается "dayofweek.full year month.numeric day". (Ниже после примеров приведена грамматика, определяющая допустимые шаблоны.)

Важно!

Вы не можете произвольно объединять компоненты и обязательно получить допустимый шаблон. Единственными допустимыми являются шаблоны, определенные предоставленной грамматикой.

Шаблон
longdate
shortdate
Давний
короткое время
dayofweek
dayofweek.full
dayofweek.abbreviated
day
month
month.full
month.abbreviated
month.numeric
year
year.full
year.abbreviated
dayofweek день месяц год
dayofweek день месяц
день месяц год
день месяц
месяц год
hour
minute
second
час минуты секунды
час минуты
timezone
timezone.full
timezone.abbreviated
год месяц день час

В следующей таблице показаны примеры выходных данных, созданных с различными значениями шаблона, языка и часов. Столбец "Эквивалентный шаблон" предоставляет шаблон, который создает те же выходные данные, что и шаблон.

ШаблонЯзык"Часы"Выходные данныеЭквивалентный шаблон
longdateru-RU<не указано>2 сентября 2013 г.{dayofweek.full}, {month.full} {day.integer}, {year.full}
longdatefr-FR<не указано>lundi 2 сентября 2013{dayofweek.full} {day.integer} {month.full} {year.full}
shortdateru-RU<не указано>9‎/‎2‎/‎2013{month.integer}/{day.integer}/{year.full}
shortdatefr-FR<не указано>02‎/‎09‎/‎2013{day.integer(2)}/{month.integer(2)}/{year.full}
dayofweek month dayru-RU<не указано>Понедельник, 2 сентября{dayofweek.full}, {month.full} {day.integer}
день месяца dayofweekru-RU<не указано>Понедельник, 2 сентября{dayofweek.full}, {month.full} {day.integer}
Давнийru-RU<не указано>06:01:24{hour.integer}:{minute.integer(2)}:{second.integer(2)} {period.abbreviated}
Давнийru-RU24HourClock‎17‎:‎32‎:‎45{hour.integer}:{minute.integer(2)}:{second.integer(2)}
Давнийfr-FR<не указано>17‎:‎32‎:‎45{hour.integer(2)}:{minute.integer(2)}:{second.integer(2)}
короткое времяru-RU<не указано>6:01{hour.integer}:{minute.integer(2)} {period.abbreviated}
короткое времяru-RU24HourClock17‎:‎32{hour.integer}:{minute.integer(2)}
короткое времяfr-FR<не указано>17‎:‎32{hour.integer(2)}:{minute.integer(2)}

Шаблоны формата состоят из литеральной строки с полями, разделенными фигурными скобками, например "{day.numeric}/{month.numeric}/{year.full}". В следующей таблице перечислены некоторые часто используемые поля. (Ниже после примеров приведена грамматика, которая определяет допустимые шаблоны.)

Важно!

Вы не можете произвольно объединять поля и обязательно получить допустимый шаблон. Единственными допустимыми являются шаблоны, определенные предоставленной грамматикой.

Форматировать поле шаблона
{openbrace}
{closebrace}
{dayofweek.solo.<type>} где <type> имеет значение full / сокращено / abbreviated(n)
{dayofweek.<type>} где <type> имеет значение full / сокращено / abbreviated(n)
{day.<type>} где <type> — integer / integer(n)
{month.<type>} где <тип> — full / сокращенный / abbreviated(n) / integer / integer(n)
{month.solo.<type>} где <type> имеет значение full / сокращено / abbreviated(n)
{year.<type>} где <type> имеет значение full / сокращено / abbreviated(n)
{era.<type>} где <type> имеет значение full / сокращено / abbreviated(n)
{hour.<type>} где <type> — integer / integer(n)
{period.<type>} где <type> имеет значение full / сокращено / abbreviated(n)
{minute.<type>} где <type> — integer / integer(n)
{second.<type>} где <type> — integer / integer(n)
{часовой пояс.<type>} где <type> имеет значение full / сокращено / abbreviated(n)

Примечание

  • Используйте {openbrace} или {closebrace} , чтобы указать, что "{" или "}" отображается в строке литерала.
  • solo задает автономную форму. Для языков с различиями генитивного регистра генитивный регистр является регистром без пометки. Чтобы получить номинативный регистр, используйте solo.
  • целое число(2) для пятого дня месяца (например) имеет значение "05", а целое число(1) — "5". целое число дает наилучший n для заданного сочетания языка и календаря.
  • В течение многих лет , full производит все цифры ("2013"). сокращенное является синонимом сокращенного (2) — 2-значного года григорианского календаря ("13"). (Другие календари могут в конечном итоге использовать что-то другое по умолчанию. Мы сохранили сокращенное значение, чтобы иметь семантику лучшего для определенного сочетания языка и календаря.) abbreviated(n) усекается до наименее значимых n цифр (например, 2013 с n =1 имеет значение "3").

В следующей таблице приведены примеры выходных данных форматировщиков, созданных с различными значениями шаблона, языка и часов.

ШаблонЯзык"Часы"Выходные данные
{dayofweek.full}, {month.full} {day.integer}, {year.full}ru-RU<не указано>2 сентября 2013 г.
{dayofweek.full}, {day.integer(2)} {month.full}, {year.full}fr-FR<не указано>lundi, 02 septembre, 2013
{month.integer}/{day.integer}/{year.full}ru-RU<не указано>9/‎2/2013
{month.integer}/{day.integer}/{year.abbreviated}ru-RU<не указано>9/‎2/13
{month.integer(2)}/{day.integer(2)}/{year.abbreviated}ru-RU<не указано>09/‎02/13
{hour.integer}:{minute.integer(2)}:{second.integer(2)} {period.abbreviated}ru-RU<не указано>6:01:24
{hour.integer}:{minute.integer(2)}:{second.integer(2)} {period.abbreviated}ru-RU24HourClock17:32:45

Конструкторы

DateTimeFormatter(HourFormat, MinuteFormat, SecondFormat)

Создает объект DateTimeFormatter , инициализируемый в форматах hour, minute и second.

DateTimeFormatter(String)

Создает объект DateTimeFormatter , инициализируемый строкой шаблона формата.

DateTimeFormatter(String, IIterable<String>)

Создает объект DateTimeFormatter , инициализируемый строкой шаблона формата и списком языков.

DateTimeFormatter(String, IIterable<String>, String, String, String)

Создает объект DateTimeFormatter , инициализируемый строкой шаблона формата, списком языков, географическим регионом, календарем и часами.

DateTimeFormatter(YearFormat, MonthFormat, DayFormat, DayOfWeekFormat)

Создает объект DateTimeFormatter , инициализируемый с форматами года, месяца, дня и дня недели.

DateTimeFormatter(YearFormat, MonthFormat, DayFormat, DayOfWeekFormat, HourFormat, MinuteFormat, SecondFormat, IIterable<String>)

Создает объект DateTimeFormatter , инициализируемый форматами года, месяца, дня, дня недели, часа, минуты и секунды, а также списка языков.

DateTimeFormatter(YearFormat, MonthFormat, DayFormat, DayOfWeekFormat, HourFormat, MinuteFormat, SecondFormat, IIterable<String>, String, String, String)

Создает объект DateTimeFormatter со всеми указанными форматами и идентификаторами.

Свойства

Calendar

Возвращает календарь, используемый при форматировании дат.

Clock

Возвращает часы, используемые при форматировании времени.

GeographicRegion

Возвращает или задает регион, используемый при форматировании дат и времени.

IncludeDay

Возвращает значение DayFormat в шаблоне.

IncludeDayOfWeek

Возвращает значение DayOfWeekFormat в шаблоне.

IncludeHour

Возвращает значение HourFormat в шаблоне.

IncludeMinute

Возвращает значение MinuteFormat в шаблоне.

IncludeMonth

Возвращает monthFormat в шаблоне.

IncludeSecond

Возвращает значение SecondFormat в шаблоне.

IncludeYear

Возвращает YearFormat в шаблоне.

Languages

Возвращает список приоритетов идентификаторов языка, используемых при форматировании дат и времени.

LongDate

Возвращает объект DateTimeFormatter , который форматирует даты в соответствии с пользовательским шаблоном длинных дат.

LongTime

Возвращает объект DateTimeFormatter , который форматирует время в соответствии с шаблоном длительного времени, выбранного пользователем.

NumeralSystem

Возвращает или задает систему нумеровки, используемую для форматирования дат и времени.

Patterns

Возвращает шаблоны, соответствующие этому шаблону, которые используются при форматировании дат и времени.

ResolvedGeographicRegion

Возвращает географический регион, который последний раз использовался для форматирования дат и времени.

ResolvedLanguage

Возвращает язык, который последний раз использовался для форматирования дат и времени.

ShortDate

Возвращает объект DateTimeFormatter , который форматирует даты в соответствии с пользовательским шаблоном короткой даты.

ShortTime

Возвращает объект DateTimeFormatter , который форматирует время в соответствии с шаблоном короткого времени, выбранного пользователем.

Template

Возвращает строковое представление этого шаблона формата.

Методы

Format(DateTime)

Возвращает строковое представление предоставленной даты и времени.

Format(DateTime, String)

Возвращает строку, представляющую заданную дату и время в заданном часовом поясе, соответствующую шаблону, используемому в настоящее время модульом форматирования.

Применяется к

См. также раздел