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


Получение сведений о времени и дате

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

Windows Vista и более поздних версий: функции, рассмотренные в этом разделе, могут извлекать данные из пользовательских локалей. В частности, их можно использовать для настройки форматов времени и даты. Например, можно иметь формат времени, например "hhHmm'ss'", что приводит к строкам времени, таким как "12H34'12'".

Получение сведений о времени

Приложение может получать строки для любого времени в формате, подходящем для текущего языкового стандарта, с помощью функций GetTimeFormat и GetTimeFormatEx. Любая функция проверяет каждое из значений времени в допустимой структуре SYSTEMTIME, чтобы определить, что она находится в соответствующем диапазоне значений, игнорируя части даты структуры. Если любое из значений времени выходит за пределы правильного диапазона, функция завершается ошибкой с кодом ERROR_INVALID_PARAMETER. Функция не возвращает ошибок для неправильной строки форматирования, но просто формирует оптимальную строку времени.

Заметка

** Функции времени NLS не включают миллисекунды в формате отформатированного времени.

 

Чтобы получить формат времени без фактического форматирования, приложение может использовать функцию GetLocaleInfo или GetLocaleInfoEx, указав в вызове константу LOCALE_STIMEFORMAT.

использовать маркеры времени

Примерами меток времени являются "AM" и "PM" для английского (США) и "de." и "du." для испанского (Мексика). Если TIME_NOTIMEMARKER указан в вызове GetTimeFormat или GetTimeFormatEx, функция удаляет разделители, предшествующие и следующие за маркером времени. Если маркер времени существует и флаг TIME_NOTIMEMARKER не задан в вызове, функция локализует маркер времени на основе указанного идентификатора языкового стандарта.

Удаление разделителей перед минутами и секундами

Ваше приложение может вызывать GetTimeFormat или GetTimeFormatEx с параметрами TIME_NOMINUTESORSECONDS или TIME_NOSECONDS, чтобы убрать разделители, следующие за минутами и/или секундами.

Использовать 24-часовой формат времени

Если ваше приложение поддерживает 24-часовой формат, оно может вызывать GetTimeFormat или GetTimeFormatEx с параметром TIME_FORCE24HOURFORMAT. Если флаг TIME_NOTIMEMARKER не задан, функция отображает существующий маркер времени.

Получение сведений о дате

Приложение может получать строки для любой даты в формате, подходящем для текущего языкового стандарта, с помощью функций GetDateFormat и GetDateFormatEx. Любая из функций проверяет каждое из значений даты, таких как год, месяц, день и день недели, в допустимой структуре SYSTEMTIME , игнорируя временные части структуры. Имя дня, сокращенное имя дня, имя месяца и сокращенное имя месяца все локализованы на основе идентификатора языкового стандарта. Если день недели неверный, функция использует правильное значение и не возвращает ошибку. Если любое из других значений дат находится за пределами правильного диапазона, функция завершается ошибкой с кодом ERROR_INVALID_PARAMETER. Функция не возвращает ошибок для неправильной строки форматирования, но просто формирует лучшую строку дат.

Если приложению требуется формат даты для определенного календаря, оно должно использовать GetCalendarInfo или GetCalendarInfoEx, передавая соответствующий идентификатор календаря. Чтобы вернуть все форматы дат для определенного календаря, приложение может использовать EnumCalendarInfoEx, EnumCalendarInfoExExex, EnumDateFormatsExили EnumDateFormatsExEx.

Укажите альтернативный календарь

Приложение может вызывать GetDateFormat или GetDateFormatEx с флагом DATE_USE_ALT_CALENDAR, чтобы использовать формат по умолчанию для заданного альтернативного календаря. Если для альтернативного календаря нет формата по умолчанию, функция использует пользовательские настройки.

Чтобы получить формат даты для альтернативного календаря, приложение может использовать GetLocaleInfo или GetLocaleInfoEx с константой LOCALE_IOPTIONALCALENDAR.

указание типа даты

Если приложение хочет использовать короткий формат дат, он указывает DATE_SHORTDATE в вызове GetDateFormat или GetDateFormatEx. Формат длинной даты можно получить, указав DATE_LONGDATE в вызове функции. Если ни один флаг не указан, и lpFormat имеет значение NULL, функция использует DATE_SHORTDATE по умолчанию.

Чтобы получить короткий и длинный формат даты для календаря языкового стандарта по умолчанию, приложение должно использовать функцию GetLocaleInfo или getLocaleInfoEx с константой LOCALE_SSHORTDATE или LOCALE_SLONGDATE.

Укажите рисунок формата даты

Приложение может указать рисунок формата даты, который GetDateFormat или GetDateFormatEx используется для формирования строки даты. Если требуется формат даты для указанного языкового стандарта, приложение может вызвать функцию, установив lpFormat в NULL. Если параметру не задано значение NULL, функция использует локаль только для сведений, не указанных в строке рисунка формата, например, имена дней и месяцев в рамках используемой локали.

Приложение может заключать любой текст, который должен оставаться в неизменном виде, в одни кавычки. Одинарные кавычки также можно использовать как экранирующий символ, чтобы сам знак отображался в строке даты. Однако escape-последовательность должна быть заключена в две одинарные кавычки. Например, чтобы отобразить дату как "Май '93", строка формата: MMMM ''yy".

Получение сведений о длительности

Windows Vista и более поздние версии: функции GetDurationFormat и GetDurationFormatEx доступны для получения форматов длительности для языковых стандартов, включая пользовательские языковые стандарты. Чтобы получить формат длительности по умолчанию для языкового стандарта, приложение должно использовать функцию GetLocaleInfo GetLocaleInfo или Функцию GetLocaleInfoEx с константой LOCALE_SDURATION.

Использование поддержки национальных языков

Время и Дата

использование постоянных данных языковой среды