如何正确初始化Date?为何12:00:00 AM未显示时间?
VBA日期显示问题解答
原因分析
VBA的Date类型本质是浮点数:整数部分对应日期,小数部分对应时间。午夜(12:00:00 AM / 00:00:00)的小数部分为0,属于日期的默认起始时刻。MsgBox在输出Date变量时,会遵循系统默认的显示规则:当时间部分为0时自动省略,仅显示日期;只有时间部分非0(比如中午12点),才会显示完整的日期时间。
你改成00:00:00没用,是因为它和12:00:00 AM是同一个时间点,对应的浮点值完全一致,MsgBox依然会触发自动省略逻辑。
解决方案
要强制显示完整的日期时间(包括午夜的时间部分),需要用Format函数自定义输出格式,示例代码如下:
Dim tmpDate as Date tmpDate = "01/01/2000 12:00:00 AM" MsgBox Format(tmpDate, "mm/dd/yyyy hh:mm:ss AM/PM") tmpDate = "01/01/2000 12:00:00 PM" MsgBox Format(tmpDate, "mm/dd/yyyy hh:mm:ss AM/PM")
执行后输出结果:
01/01/2000 12:00:00 AM 01/01/2000 12:00:00 PM
内容的提问来源于stack exchange,提问作者Mr. Tacio
相关产品推荐
相关产品推荐

