systemTimeToVariantTime 函数 (oleauto.h)

将系统时间转换为变体表示形式。

语法

INT SystemTimeToVariantTime(
  [in]  LPSYSTEMTIME lpSystemTime,
  [out] DOUBLE       *pvtime
);

参数

[in] lpSystemTime

系统时间。

[out] pvtime

变体时间。

返回值

函数在成功时返回 TRUE,否则返回 FALSE。

注解

变体时间存储为 8 字节实际值 ( 倍) ,表示 1900 年 1 月 1 日至 9999 年 12 月 31 日之间的日期(含 1999 年 1 月 1 日)。 值 2.0 表示 1900 年 1 月 1 日;3.0 表示 1900 年 1 月 2 日等。 向值添加 1 会将日期递增一天。 值的分数部分表示一天中的时间。 因此,2.5 表示 1900 年 1 月 1 日中午:3.25 表示 1900 年 1 月 2 日凌晨 6:00,依依此。 负数表示 1899 年 12 月 30 日之前的日期。

变体时间解析为 1 秒。 将忽略输入日期中的任何毫秒。

注意

使用变体时间时,请注意在闰年中添加的额外日期,如果未经处理,可能会产生意外结果。 有关详细信息,请参阅 闰年就绪情况

SYSTEMTIME 结构非常有用,原因如下:

  • 它跨越所有时间/日期周期。 MS-DOS 日期/时间限制为仅表示 1/1/1980 到 2107/12/31 之间的日期。
  • 无需执行任何位解码,即可轻松访问日期/时间元素。
  • 国家数据支持数据和时间格式设置函数 GetDateFormatGetTimeFormat 采用 LPSYSTEMTIME 值作为输入。
  • 它是 Windows 支持的默认时间/日期数据格式。
SystemTimeToVariantTime 函数将接受无效日期,并在解析为 VARIANT 时间时尝试修复这些日期。 例如,2001 年 2 月 29 日等无效日期将解析为 2001 年 3 月 1 日。 只有天数是固定的,因此无效的月份值会导致返回错误。 天数检查为介于 1 到 31 之间。 负天数和大于 31 的天数会导致错误。 小于 31 但大于该月最大日期的一天,该日期将提升为下个月的适当日期。 等于零的一天解析为上个月的最后一天。 例如,无效日期(如 2/0/2001)将解析为 2001 年 1 月 31 日。

要求

要求
目标平台 Windows
标头 oleauto.h
Library OleAut32.lib
DLL OleAut32.dll