Получение сведений о времени и дате
В этом разделе содержатся инструкции по использованию функций NLS в приложениях для получения сведений о времени и дате , а также данных о длительности. Если приложение должно сохранять данные, см. раздел Использование постоянных данных языкового стандарта.
Windows Vista и более поздних версий: Функции, рассматриваемые в этом разделе, могут извлекать данные из пользовательских языковых стандартов. В частности, их можно использовать для настройки форматов времени и даты. Например, можно использовать формат времени, например "hhHmm'ss'", что приводит к таким временным строкам, как "12H34'12'".
Получение сведений о времени
Приложение может получать строки в любое время в формате, соответствующем текущему языковому стандарту, с помощью функций GetTimeFormat и GetTimeFormatEx . Любая из этих функций проверяет каждое из значений времени в допустимой структуре SYSTEMTIME , чтобы определить, что она находится в соответствующем диапазоне значений, игнорируя части даты в структуре. Если какое-либо из значений времени выходит за пределы правильного диапазона, функция завершается сбоем с ERROR_INVALID_PARAMETER кода. Функция не возвращает ошибок для строки неправильного формата, а просто формирует наилучшую строку времени.
Примечание
Функции времени NLS не включают миллисекунда в составе отформатированных строк времени.
Чтобы получить формат времени без фактического форматирования, приложение может использовать функцию GetLocaleInfo или GetLocaleInfoEx , указав константу LOCALE_STIMEFORMAT в вызове.
Использование меток времени
Примеры меток времени: "AM" и "PM" для английского языка (США) и "de." и "du." для испанского языка (Мексика). Если в вызове GetTimeFormat или GetTimeFormatEx указан TIME_NOTIMEMARKER, функция удаляет разделители, предшествующие маркеру времени и следующие за ними. Если маркер времени существует, а флаг TIME_NOTIMEMARKER не задан в вызове, функция локализует маркер времени на основе указанного идентификатора языкового стандарта.
Удаление разделителей, предшествующих минутам и секундам
Приложение может вызывать GetTimeFormat или GetTimeFormatEx с TIME_NOMINUTESORSECONDS или TIME_NOSECONDS, чтобы удалить разделители, следующие за элементами minutes и (или) seconds.
Использование 24-часового формата времени
Если приложение поддерживает 24-часовой формат времени, оно может вызывать GetTimeFormat или GetTimeFormatEx с TIME_FORCE24HOURFORMAT. Если флаг TIME_NOTIMEMARKER не установлен, функция отображает любой существующий маркер времени.
Получение сведений о дате
Приложение может получать строки для любой даты в формате, соответствующем текущему языковому стандарту, с помощью функций GetDateFormat и GetDateFormatEx . Любая из функций проверяет все значения даты год, месяц, день и день недели в допустимой структуре SYSTEMTIME , игнорируя временные части структуры. Название дня, сокращенное название дня, название месяца и сокращенное название месяца локализованы на основе идентификатора языкового стандарта. Если указан неправильный день недели, функция использует правильное значение и не возвращает ошибок. Если какие-либо другие значения даты находятся за пределами правильного диапазона, функция завершается сбоем с кодом ERROR_INVALID_PARAMETER. Функция не возвращает ошибок для строки неправильного формата, а просто формирует наилучшую строку даты.
Если приложению требуется формат даты для определенного календаря, оно должно использовать GetCalendarInfo или GetCalendarInfoEx, передав соответствующий идентификатор календаря. Чтобы вернуть все форматы дат для определенного календаря, приложение может использовать EnumCalendarInfoEx, EnumCalendarInfoEx,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-символа, чтобы сама метка отображалась в строке даты. Однако escape-последовательность должна быть заключена в две одинарные кавычки. Например, чтобы отобразить дату как "May '93", строка формата будет: "MMMM ''''yy".
Получение сведений о длительности
Windows Vista и более поздних версий: Функции GetDurationFormat и GetDurationFormatEx доступны для получения форматов длительности для языковых стандартов, включая пользовательские языковые параметры. Чтобы получить формат длительности по умолчанию для языкового стандарта, приложение должно использовать функцию GetLocaleInfo или GetLocaleInfoEx с константой LOCALE_SDURATION .
Связанные темы