VBA 系统时间 - 30 天
VBA SystemTime - 30 days
我正在处理以前开发人员的代码。此代码设置了 SystemTime。
有没有办法以这种格式获得今天的日期和负 30 天?
代码如下:
Public Function GetIsoTimestampTest() As String
Dim st As SYSTEMTIME
'Get the local date and time
GetSystemTime st
'Format the result
GetIsoTimestampTest = _
Format$(st.wYear, "0000") & "-" & _
Format$(st.wMonth, "00") & "-" & _
Format$(st.wDay, "00") & "T" & _
Format$(st.wHour, "00") & ":" & _
Format$(st.wMinute, "00") & ":" & _
Format$(st.wSecond, "00") & "Z"
End Function
构建本机日期和时间,添加 -30 天,格式为字符串:
utcInIsoFormat = Format$(DateAdd("d", -30, _
DateSerial(st.wYear, st.wMonth, st.wDay) _
+ TimeSerial(st.wHour, st.wMinute, st.wSecond)), "yyyy-mm-ddThh:nn:ssZ")
SYSTEMTIME 似乎是您代码中别处定义的自定义类型。它不是 Access VBA 中可用的标准类型。所以要有效地使用它,您需要找到定义。此外,GetSystemTime 也可能是您的代码独有的自定义函数。这是一个类似类型的示例定义,尽管它可能与您的系统中实现的不完全相同:http://custom-designed-databases.com/wordpress/2011/get-milliseconds-or-seconds-from-system-time-with-vba/
也就是说,系统时间指的是Windows系统时间。您还具有 VBA 的原生能力,可以使用 Now() 函数获取时间。 (https://msdn.microsoft.com/en-us/library/office/gg278671.aspx)这个returns一个日期类型的变量,相当于一个数字,整数代表天数,小数代表一天中的时间。比今天早 30 天的例子是:
Dim lastMonth as Date
Dim formattedDate as String
lastMonth = Now() - 30
formattedDate = Format(lastMonth, "yyyy-mm-ddThh:nn:ssZ")
DateSerial 愉快地接受负天数。因此:
Public Function IsoDateMinus30() As Date
Dim st As SYSTEMTIME
Dim Result As Date
' Get the local date and time
GetSystemTime st
Result = DateSerial(st.wYear, st.wMonth, st.wDay - 30)
' To include time:
'
' Result = _
' DateSerial(st.wYear, st.wMonth, st.wDay - 30) + _
' TimeSerial(st.wHour, st.wMinute, st.wSecond)
IsoDateMinus30 = Result
End Function
我正在处理以前开发人员的代码。此代码设置了 SystemTime。 有没有办法以这种格式获得今天的日期和负 30 天?
代码如下:
Public Function GetIsoTimestampTest() As String
Dim st As SYSTEMTIME
'Get the local date and time
GetSystemTime st
'Format the result
GetIsoTimestampTest = _
Format$(st.wYear, "0000") & "-" & _
Format$(st.wMonth, "00") & "-" & _
Format$(st.wDay, "00") & "T" & _
Format$(st.wHour, "00") & ":" & _
Format$(st.wMinute, "00") & ":" & _
Format$(st.wSecond, "00") & "Z"
End Function
构建本机日期和时间,添加 -30 天,格式为字符串:
utcInIsoFormat = Format$(DateAdd("d", -30, _
DateSerial(st.wYear, st.wMonth, st.wDay) _
+ TimeSerial(st.wHour, st.wMinute, st.wSecond)), "yyyy-mm-ddThh:nn:ssZ")
SYSTEMTIME 似乎是您代码中别处定义的自定义类型。它不是 Access VBA 中可用的标准类型。所以要有效地使用它,您需要找到定义。此外,GetSystemTime 也可能是您的代码独有的自定义函数。这是一个类似类型的示例定义,尽管它可能与您的系统中实现的不完全相同:http://custom-designed-databases.com/wordpress/2011/get-milliseconds-or-seconds-from-system-time-with-vba/
也就是说,系统时间指的是Windows系统时间。您还具有 VBA 的原生能力,可以使用 Now() 函数获取时间。 (https://msdn.microsoft.com/en-us/library/office/gg278671.aspx)这个returns一个日期类型的变量,相当于一个数字,整数代表天数,小数代表一天中的时间。比今天早 30 天的例子是:
Dim lastMonth as Date
Dim formattedDate as String
lastMonth = Now() - 30
formattedDate = Format(lastMonth, "yyyy-mm-ddThh:nn:ssZ")
DateSerial 愉快地接受负天数。因此:
Public Function IsoDateMinus30() As Date
Dim st As SYSTEMTIME
Dim Result As Date
' Get the local date and time
GetSystemTime st
Result = DateSerial(st.wYear, st.wMonth, st.wDay - 30)
' To include time:
'
' Result = _
' DateSerial(st.wYear, st.wMonth, st.wDay - 30) + _
' TimeSerial(st.wHour, st.wMinute, st.wSecond)
IsoDateMinus30 = Result
End Function