我无法理解VBA interval
函数中DateDiff
参数的“day(y)”和“Day(d)”选项之间的差异。
在什么情况下(例如d1
和d2
的样本值),以下行会给出不同的结果?
Debug.Print DateDiff("d", d1, d2)
Debug.Print DateDiff("y", d1, d2)
d
是一个月的日子y
是一年中的一天
d
实际上是众所周知的月份日。我不得不说,在44年的编程中,无论是否使用计算机进行会计,我都从未见过使用过的日常工作。但在可能是文化的事情。在澳大利亚,您每两周(每两周)获得报酬并支付租金。没有一种编程语言知道两周是什么。还有一个月(4周)。
这就是帮助说的。
要计算date1和date2之间的天数,您可以使用日期(“y”)或日期(“d”)。当interval为Weekday(“w”)时,DateDiff返回两个日期之间的周数。如果date1属于星期一,则DateDiff会计算到date2的星期一数。它计算date2但不计算date1。但是,如果interval是Week(“ww”),则DateDiff函数返回两个日期之间的日历周数。它计算date1和date2之间的星期日数。如果日期落在星期日,DateDiff会计算date2;但它不计算date1,即使它确实属于星期日。
从VB6 / VBA / VBS帮助(所有三个中的相同段落)。
Microsoft Basics使用OLE自动化功能。 FormatDateTime
使用VarFormatDateTime
(https://msdn.microsoft.com/en-us/library/windows/desktop/ms221554(v=vs.85).aspx),它调用了适用于国际特征的Windows API,例如GetTimeFormat
(例如https://msdn.microsoft.com/en-us/library/windows/desktop/dd318130(v=vs.85).aspx)。
要获得完整的文档,您需要阅读所有三个级别的文档。
EG VB的Msgbox
是API函数Messagebox
(https://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx)的包装器。您可以传递API参考或头文件中记录的任何参数,VB只是传递它。 VB的帮助中只列出了一些相关的。
重要
请记住,唯一的保证是VB帮助文件中所述的内容。这就是合同 - 你按照它说的做,它会按照它在帮助中所说的做。一般来说,它只承诺一件有限的细节。以上都是实施细节。你不能依赖它。您将VB语句视为黑盒子。随着Windows的更改,您的旧程序会随之自动更改。