日期类型
DATE 类型是使用 8 字节浮点数字来实现的。 日以整数增量表示,从 1899 年 12 月 30 日开始,午夜时间为零点。 小时值以数字的小数部分的绝对值表示。 下表介绍了与其 DATE 类型数字等效的多个日期:
日期和时间 | 表示形式 |
---|---|
1899 年 12 月 30 日午夜 | 0.00 |
1900 年 1 月 1 日午夜 | 2.00 |
1900 年 1 月 4 日午夜 | 5.00 |
1900 年 1 月 4 日上午 6 点 | 5.25 |
1900 年 1 月 4 日中午 | 5.50 |
1900 年 1 月 4 日下午 9 点 | 5.875 |
DATE 日期类型以及 COleDateTime
类将日期和时间表示为经典数字行。 COleDateTime
类包含用于操作 DATE 值的多种方法,包括转换到其他常见日期格式和从其他通用日期格式转换。
在“自动化”中使用这些日期和时间格式时,应注意以下几点:
日期是在本地时间指定的;在使用不同时区中的日期时,必须手动同步。
日期类型不考虑夏令时。
对于(1899 年 12 月 30 日之前)小于 0 的日期值,日期时间线变得不连续。 这是因为日期值的整数部分被视为有符号,而小数部分则被视为无符号部分。 换句话说,日期值的整数部分可能是正数或负数,而日期值的小数部分始终添加到总体逻辑日期。 下表列出了一些例子:
日期和时间 | 表示形式 |
---|---|
1899 年 12 月 27 日午夜 | -3.00 |
1899 年 12 月 28 日中午 | -2.50 |
1899 年 12 月 28 日午夜 | -2.00 |
1899 年 12 月 29 日午夜 | -1.00 |
1899 年 12 月 30 日,下午 6 点 | -0.75 |
1899 年 12 月 30 日中午 | -0.50 |
1899 年 12 月 30 日,上午 6 点 | -0.25 |
1899 年 12 月 30 日午夜 | 0.00 |
1899 年 12 月 30 日,上午 6 点 | 0.25 |
1899 年 12 月 30 日中午 | 0.50 |
1899 年 12 月 30 日,下午 6 点 | 0.75 |
1899 年 12 月 31 日午夜 | 1.00 |
1900 年 1 月 1 日午夜 | 2.00 |
1900 年 1 月 1 日中午 | 2.50 |
1900 年 1 月 2 日午夜 | 3.00 |
注意
请注意,由于上午 6:00 始终以小数值 0.25 表示,无论表示日期的整数是否为正(1899 年 12 月 30 日以后)或负(1899 年 12 月 30 日之前),简单的浮点比较将错误地把早于 1899 年 12 月 30 日前面的某天上午 6 点排到同一天表示上午 7 点的日期后面。
有关与 DATE 和 COleDateTime
类型相关的问题的详细信息,请参阅 COleDateTime 类和日期和时间:自动化支持。