<cfoutput>
<cfset x = createTimespan(0,0,0,0)>
<cfset epoch = createDateTime(1899,12,30,0,0,0)>
<cfset date = epoch + x>
#date# #dateFormat(date)# #timeFormat(date)#
</cfoutput>
Run Code Online (Sandbox Code Playgroud)
输出:
0 30-Dec-99 12:00 AM
1899年12月30日有什么重要意义?
正如您所说,它可能与COM/OLE自动化日期格式有关; 它的第一个版本是1995年在Microsoft VC++中编写的(源代码),它有利于它利用OLE功能.
反过来,OLE日期时间类型受到将VBA用于Excel的决定的影响.
Excel必须与Lotus 123向后兼容,Lotus 123认为1900年是闰年(但是,只有可以被400整除的年份,可被100整除的年数是闰年); 虽然它的第1天正式是1900年1月1日,它将29/02/1900视为现存日,所以其他所有日子都被"向前移动"了一天.这意味着,自19/3/19以来的每一天,"实际第1天"是18/12/1899(或者,如果您愿意,第0天是18/12/1899).Excel人员首先使用一个小的黑客来使他们的功能完全像Lotus 123那样.
另一方面,当VBA被添加到Excel时,负责VBA中日期/时间功能的人员决定以某种方式修复整个事情:而不是使用1/1/1900作为第1天并假装存在29/02/1900,他们实际上将时间推迟了一天:1900年的前两个月与莲花123不再兼容,但系统获得了一致性.
资料来源:http://www.joelonsoftware.com/items/2006/06/16.html
| 归档时间: |
|
| 查看次数: |
1105 次 |
| 最近记录: |