更改或添加时间到VBA中的日期

时间:2018-03-07 12:41:38

标签: vba date datetime outlook datetime-format

我正在使用Outlook的VBA项目。该项目正在查看日历约会,并将它们与从SQL数据库中提取并存储在Date变量中的日期进行比较。

目前,当日期来自SQL数据库时,它们没有任何Time组件,但我想添加一个。

例如,SQL查询出现“07/03/2018”,我希望能够将其设置为“07/03/2018 09:00:00”以及当天的其他各种时间。< / p>

有没有办法在不将日期变量转换为字符串的情况下执行此操作,只是在最后添加时间?这是因为我希望能够在程序的后期对变量使用基于日期的函数,例如DateAdd等。

1 个答案:

答案 0 :(得分:0)

有很多方法可以一起添加日期和时间。

这里有一些我的头脑:

Sub examples()

    'store an example date
    Dim dt As Date
    dt = CDate("March 7, 2018")

    'now to add 9 hours:
    Debug.Print dt + (9 / 24)

    'or, using DateAdd:
    Debug.Print DateAdd("h", 9, dt)

    'or, add a time:
    Dim tm As Date
    tm = CDate("9:00 am")
    Debug.Print dt + tm

    'or, as text:
    Dim str As String
    str = Format(dt, "mmm d, yyyy")
    str = str & " 9:00 am"
    Debug.Print CDate(str)

    'or, with TimeValue:
    Debug.Print dt + TimeValue("9:00")

    'or, get extract the date from a datettime and add a different time:
    Debug.Print DateValue(Now()) + TimeValue("9:00")

End Sub

哪种方法最好取决于你究竟想用它做什么。

日期只是数字

在Excel和VBA中,日期(或日期时间)仅数字从以下开始:

  

1900年1月0日午夜

...并按 1 per day 增加。

1 = January 1, 1900, 00:00:00 (00:00 = midnight)
2 = January 2, 1900, 00:00:00

43166 = March 7, 2018

需要在1900年1月2日上午9点成功吗?

  • 1小时 1 / 24 一天。

  • 9:00 am = (9 ÷ 24) = 0.375

  • 2.375 = January 2, 1900 9:00 am

类似地:

  • 9:00 pm = (18 ÷ 24) = 0.875

  • 2.875 = January 2, 1900 9:00 pm

    早上6:00 = 0.25(¼天) NOON = 0.5(½天) 下午6:00 = 0.75(¾天)

    1小时≈0.417 1分钟≈0.000695 1秒≈0.000011574

到夏天多少天?

Today          =   43166  (March 7, 2018)
Summer begins  =   43272  (June 21, 2018)  [Northern Hemisphere]

43272 - 43166  =   106 days

到夏天要几个小时?

106 × 24       =   2544 hours

...你明白了。

Excel中可能的最长时间

Friday, December 31, 9999 23:59:59  =  2958465.99998843

(......所以不要为那个周末做任何计划。)

更多信息: