我正在尝试比现在大4天的日期。这是我的代码
Sub calcdate()
Dim nDateTime, oDateTime As Date
nDateTime = Format(Now, "YYMMDD")
oDateTime = Format(DateAdd("d", -4, nDateTime), "YYMMDD")
MsgBox ("Today is " & nDateTime & " And OldDate is " & oDateTime)
End Sub
但输出是'今天是170604而OldDate是02-10-3734“
我试图在没有DateAdd
的情况下这样做nDateTime = Format(Now, "YYMMDD")
oDateTime = nDateTime - 4
*输出为'今天是170604而OldDate是170604'
我尝试了这些更改
nDateTime = Format(Now, "YYMMDD")
oDateTime = DateAdd("d", -4, nDateTime)
*输出为'今天是170604而OldDate是31-01-2367'
nDateTime = Format(Now, "YY-MM-DD")
oDateTime = Format(DateAdd("d", -4, nDateTime), "YY-MM-DD")
*输出为'今天是17-06-04而OldDate是04-06-2013'
所以在这里它似乎减去了几年,虽然我把“d”。
我试过的最后一件事:
nDateTime = Format(Now, "DD-MM-YY")
oDateTime = Format(DateAdd("d", -4, nDateTime), "DD-MM-YY")
*输出为'今天是04-06-17而OldDate是31-05-2017' 我希望这个日期,格式170531,为什么它给我2017年,而我选择格式YY?
答案 0 :(得分:1)
格式化会创建一个字符串,因此您无法再对其进行合理的计算。之后改为格式化:
Dim nDateTime As Date, oDateTime As Date
nDateTime = Now
oDateTime = nDateTime - 4
MsgBox "Today is " & Format(nDateTime, "YYMMDD") & " And OldDate is " & Format(oDateTime, "YYMMDD")
另外,你需要为每个变量声明变量类型,就像我一样。
答案 1 :(得分:0)
因为格式(现在,“YYMMDD”)结果是字符串
Dim myDate As Date
Dim nDatetime As String, oDateTime As String
myDate = Now
nDatetime = Format(myDate, "yymmdd")
oDateTime = Format(DateAdd("d", -4, myDate), "YY-MM-DD")