当我将VBA中的日期写入Excel工作表时,有时工作表上的值最终会比我预期的少一天(提前一天).这是我在使用Excel 2003,2007和2010的多台计算机上测试过的示例.从即时窗口:
?Format(41652.9999999963, "yyyy-mm-dd hh:mm:ss")
> 2014-01-14 00:00:00
[A1].value = CDate(41652.9999999963)
?Format([A1].value, "yyyy-mm-dd hh:mm:ss")
> 2014-01-13 00:00:00
[A1].value = CDbl(CDate(41652.9999999963))
?Format([A1].value, "yyyy-mm-dd hh:mm:ss")
> 2014-01-14 00:00:00
Run Code Online (Sandbox Code Playgroud)
究竟是什么引发了这个
编辑:
好的,让我更清楚一点,这不是一个四舍五入的问题.如果我上升或下降一小时,我得到正确的时间.只是如果我接近这个确切的数字,那么日期就会消失一整天:
[A1].value = CDate(41652.99999)
?Format([A1].value, "yyyy-mm-dd hh:mm:ss")
> 2014-01-13 23:59:59
[A1].value = CDate(41652.999999999996)
?Format([A1].value, "yyyy-mm-dd hh:mm:ss")
> 2014-01-13 00:00:00
[A1].value = CDate(41652.999999999997)
?Format([A1].value, "yyyy-mm-dd hh:mm:ss")
> 2014-01-14 00:00:00
[A1].value = CDate(41653.00001)
?Format([A1].value, "yyyy-mm-dd hh:mm:ss")
> 2014-01-14 00:00:01
Run Code Online (Sandbox Code Playgroud)