GetCalendarInfoW 函数 (winnls.h)

检索标识符指定的区域设置的日历的相关信息。

注意 出于互操作性原因,应用程序应首选 GetCalendarInfoEx 函数来 GetCalendarInfo,因为Microsoft正迁移到使用区域设置名称而不是新区域设置的区域设置标识符。 仅在 Windows Vista 及更高版本上运行的任何应用程序都应使用 GetCalendarInfoEx
 

语法

int GetCalendarInfoW(
  [in]            LCID    Locale,
  [in]            CALID   Calendar,
  [in]            CALTYPE CalType,
  [out, optional] LPWSTR  lpCalData,
  [in]            int     cchData,
  [out, optional] LPDWORD lpValue
);

参数

[in] Locale

区域设置标识符,指定要为其检索日历信息的区域设置。 可以使用 MAKELCID 宏创建区域设置标识符或使用以下预定义值之一。

[in] Calendar

日历标识符

[in] CalType

要检索的信息类型。 有关详细信息,请参阅 日历类型信息

注释GetCalendarInfo 仅返回一个字符串(如果此参数指定CAL_IYEAROFFSETRANGE或CAL_SERASTRING)。 在这两种情况下,返回当前纪元。
 
CAL_USE_CP_ACP仅适用于此函数的 ANSI 版本。

对于CAL_NOUSEROVERRIDE,该函数将忽略 SetCalendarInfo 设置的任何值,并使用当前系统默认区域设置的数据库设置。 此类型仅在组合CAL_NOUSEROVERRIDE相关 |CAL_ITWODIGITYEARMAX。 CAL_ITWODIGITYEARMAX是唯一可由 SetCalendarInfo设置的值。

[out, optional] lpCalData

指向此函数将请求的数据检索为字符串的缓冲区的指针。 如果在 CalType中指定了CAL_RETURN_NUMBER,则此参数必须检索 NULL

[in] cchData

lpCalData 缓冲区的大小(以字符为单位)。 应用程序可以将此参数设置为 0 以返回日历数据缓冲区所需的大小。 在这种情况下,不使用 lpCalData 参数。 如果为 CalType指定CAL_RETURN_NUMBER,则 cchData 的值必须为 0

[out, optional] lpValue

指向以数字的形式接收所请求数据的变量的指针。 如果在 CalType中指定CAL_RETURN_NUMBER,则 lpValue 不得 NULL。 如果未在 CalType中指定CAL_RETURN_NUMBER,则必须 lpValueNULL

返回值

返回在 lpCalData 缓冲区中检索的字符数,如果成功,cchData 设置为非零值。 如果函数成功,cchData 设置为 0,并且未指定CAL_RETURN_NUMBER,则返回值是保存日历信息所需的缓冲区大小。 如果函数成功,cchData 设置为 0,并且指定了CAL_RETURN_NUMBER,则返回值是 lpValue中检索的值的大小,即 2 表示函数的 Unicode 版本或 ANSI 版本的 4。

如果此函数不成功,则返回 0。 若要获取扩展的错误信息,应用程序可以调用 GetLastError,这会返回以下错误代码之一:

  • ERROR_INSUFFICIENT_BUFFER。 提供的缓冲区大小不够大,或者错误地设置为 NULL
  • ERROR_INVALID_FLAGS。 为标志提供的值无效。
  • ERROR_INVALID_PARAMETER。 任何参数值都无效。

言论

注意 此 API 正在更新,以支持 2019 年 5 月日本时代更改。 如果应用程序支持日语日历,则应验证它是否能够正确处理新纪元。 有关详细信息,请参阅 为日本时代更改准备应用程序
 
当此函数的 ANSI 版本与仅 Unicode 区域设置标识符一起使用时,该函数可能会成功,因为操作系统使用系统代码页。 但是,系统代码页中未定义的字符在字符串中显示为问号(?)。

注意

winnls.h 标头将 GetCalendarInfo 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows 2000 Professional [仅限桌面应用]
支持的最低服务器 Windows 2000 Server [仅限桌面应用]
目标平台 窗户
标头 winnls.h (包括 Windows.h)
Kernel32.lib
DLL Kernel32.dll

另请参阅

日历类型信息

GetCalendarInfoEx

国家语言支持

国家语言支持函数

SetCalendarInfo