将数字转换为日期疑问?

c_rrb 2017-03-11 05:41:22

Sub test()
Dim t As Date, v As Double

t = "1900-1-8"
v = CDbl(t)

Debug.Print Format(v, "yyyy/mm/dd")
Debug.Print DateAdd("d", v, #1/1/1900#)

End Sub

输出结果不一致,这是为什么?
输出:
1900/01/08
1900/1/10
...全文
101 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
c_rrb 2017-03-12
  • 打赏
  • 举报
回复
说得太好了
笨狗先飞 2017-03-11
  • 打赏
  • 举报
回复

    t = "1900-1-8"
    v = CDbl(t) ‘v=9
    
    Debug.Print Format(0, "yyyy/mm/dd")'0=1899/12/30 1=1899/12/31 2=1900/1/1 ... ... 9=1900/1/8
    Debug.Print DateAdd("d", v, #1/1/1900#) '1900/1/1+9天 =1900/1/10
Date 数据类型 Date 变量存储为 IEEE 64 位(8 个字节)浮点数值形式,其可以表示的日期范围从 100 年 1 月 1 日到 9999 年 12 月 31 日,而时间可以从 0:00:00 到 23:59:59。任何可辨认的文本日期都可以赋值给 Date 变量。日期文字须以数字符号 (#) 扩起来,例如,#January 1, 1993# 或 #1 Jan 93#。 Date 变量会根据计算机中的短日期格式来显示。时间则根据计算机的时间格式(12 或 24 小时制)来显示。 当其他的数值类型要转换为 Date 型时,小数点左边的值表示日期信息,而小数点右边的值则表示时间。午夜为 0 而中午为 0.5。负整数表示 1899 年 12 月 30 日之前的日期。

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧