检索时间和日期信息

本主题包含有关在应用程序中使用 NLS 函数检索 时间和日期 信息以及持续时间数据的说明。 如果应用程序必须保留数据,请参阅 使用持久区域设置数据

Windows Vista 及更高版本: 本主题中讨论的函数可以从 自定义区域设置检索数据。 具体而言,它们可用于自定义时间和日期格式。 例如,可以使用时间格式(如“hhHmm'ss''”),生成时间字符串,如“12H34'12'”。。

检索时间信息

应用程序可以使用 GetTimeFormat 和 GetTimeFormatEx 函数,随时获取适用于当前区域设置的格式的字符串。 任一函数都会检查有效 SYSTEMTIME 结构中的每个时间值,以确定它是否在适当的值范围内,同时忽略结构的日期部分。 如果任何时间值超出正确范围,则函数将失败,代码ERROR_INVALID_PARAMETER。 该函数不会为格式错误的字符串返回错误,但只是构成可能的最佳时间字符串。

注意

NLS 时间函数不包括毫秒作为格式化时间字符串的一部分。

 

若要在不执行任何实际格式设置的情况下获取时间格式,应用程序可以使用 GetLocaleInfoGetLocaleInfoEx 函数,并在调用中指定 LOCALE_STIMEFORMAT 常量。

使用时间标记

时间标记的示例包括英语 (美国) 的“AM”和“PM”,以及西班牙语 (墨西哥) 的“de.”和“du.”。 如果在对 GetTimeFormat 或 GetTimeFormatEx 的调用中指定了TIME_NOTIMEMARKER,则函数将删除时间标记之前和之后) 分隔符 (。 如果存在时间标记,并且调用中未设置TIME_NOTIMEMARKER标志,则函数会根据指定的区域设置标识符本地化时间标记。

删除分钟和秒之前的分隔符

应用程序可以使用指定的TIME_NOMINUTESORSECONDS或TIME_NOSECONDS调用 GetTimeFormatGetTimeFormatEx ,以删除分钟和/或秒元素后面的分隔符。

使用 24 小时时间格式

如果应用程序支持 24 小时时间格式,则可以使用TIME_FORCE24HOURFORMAT调用 GetTimeFormatGetTimeFormatEx 。 除非设置了 TIME_NOTIMEMARKER 标志,否则函数将显示任何现有的时间标记。

检索日期信息

应用程序可以使用 GetDateFormat 和 GetDateFormatEx 函数检索适用于当前区域设置的格式的任何日期的字符串。 任一函数在有效的 SYSTEMTIME 结构中检查每个日期值 year、month、day 和 day of week,并忽略结构的时间部分。 日期名称、缩写日期名称、月份名称和缩写月份名称都基于区域设置标识符进行本地化。 如果一周中的某一天不正确,则函数使用正确的值,并且不返回任何错误。 如果任何其他日期值超出正确的范围,则函数将失败,代码ERROR_INVALID_PARAMETER。 该函数不会为格式错误的字符串返回错误,但只是构成可能的最佳日期字符串。

如果应用程序需要特定日历的日期格式,则应使用 GetCalendarInfoGetCalendarInfoEx,并传递相应的 日历标识符。 若要返回特定日历的所有日期格式,应用程序可以使用 EnumCalendarInfoExEnumCalendarInfoExExEnumDateFormatsExEnumDateFormatsExEx

指定备用日历

应用程序可以使用标志DATE_USE_ALT_CALENDAR调用 GetDateFormatGetDateFormatEx ,以使用指定备用日历的默认格式。 如果没有备用日历的默认格式,该函数将使用用户替代。

若要获取备用日历的日期格式,应用程序可以使用具有LOCALE_IOPTIONALCALENDAR常量的 GetLocaleInfoGetLocaleInfoEx

指定日期类型

如果应用程序想要使用短日期格式,它会在调用 GetDateFormat 或 GetDateFormatEx 时指定DATE_SHORTDATE。 可以通过在函数调用中指定DATE_LONGDATE来获取长日期格式。 如果两个标志均未指定,并且 lpFormat 设置为 NULL,则该函数使用 DATE_SHORTDATE 作为默认值。

若要获取默认区域设置日历的短日期和长日期格式,应用程序应将 GetLocaleInfoGetLocaleInfoEx 函数与 LOCALE_SSHORTDATELOCALE_SLONGDATE 常量一起使用。

指定日期格式图片

应用程序可以指定 GetDateFormatGetDateFormatEx 用于形成日期字符串的日期格式图片。 如果需要指定区域设置的日期格式,应用程序可以在 lpFormat 设置为 NULL 的情况下调用函数。 如果 参数未设置为 NULL,则该函数仅将区域设置用于未在格式图片字符串中指定的信息,例如区域设置的日期和月份名称。

应用程序可以将任何应保持其确切形式的文本括在单引号内。 单引号还可以用作转义字符,以允许标记本身显示在日期字符串中。 但是,转义序列必须括在两个单引号内。 例如,若要将日期显示为“May '93”,格式字符串为:“MMMM ''''yy ”。

检索持续时间信息

Windows Vista 及更高版本:GetDurationFormatGetDurationFormatEx 函数可用于获取区域设置(包括自定义区域设置)的持续时间格式。 若要获取区域设置的默认持续时间格式,应用程序应使用具有 LOCALE_SDURATION 常量的 GetLocaleInfoGetLocaleInfoEx 函数。

使用国家/地区语言支持

时间和日期

使用持久区域设置数据