我正在努力正确格式化我的日期字符串,因为它似乎使用DateAdd
减去了我日期的错误部分,我不知道如何解决。
例如:
Sub DateTest()
DateStr = Format(Date, "DD-MM-YY")
Yesterday = Format(DateAdd("d", -1, CDate(DateStr)), "DD-MM-YY")
YtdStr = Format(Yesterday, "DD-MM-YY")
Debug.Print DateStr
Debug.Print Yesterday
Debug.Print YtdStr
End Sub
结果:
13-09-20
19-09-13
13-09-19
预期结果:
13-09-20
12-09-20
12-09-20
我甚至试着只使用";"一年中的某一天";因为这是针对hidden report
的,但我喜欢使用常规的日期字符串,我想或者至少我想弄清楚两者,但使用一年中的某一天给我带来了一些有趣的结果。昨天必须是d 0
,这毫无意义,但如果我使用-1
,它会删除两个日期。同样,把它变成一根绳子似乎可以让你改天?
例如:
Sub DateTest()
DateStr = Format(Date, "Y")
YtdDate = Format(DateAdd("d", 0, CDate(DateStr)), "Y")
YtdStr = Format(YtdDate, "Y")
Debug.Print DateStr
Debug.Print YtdDate
Debug.Print YtdStr
End Sub
Resut:
257
256
255 'This was expected to be a string 256?
有人能指出如何正确格式化吗?
您使用DD-MM-YY
将源日期格式化为字符串,使用当前系统默认日期格式(显然是MM-DD-YY
(将其解析为最新日期,将日期添加到结果中,并将其格式化为字符串。您不希望将这些中间格式设置为字符串。
Sub DateTest()
Dim DateNotStr As Date
Dim YesterdayNotStrEither As Date
DateNotStr = Date
YesterdayNotStrEither = DateAdd("d", -1, DateNotStr)
Debug.Print Format$(DateNotStr, "dd-mm-yy")
Debug.Print Format$(YesterdayNotStrEither , "dd-mm-yy")
End Sub
我认为问题是CDate
没有根据我的系统默认日期格式正确转换我的日期。我为今天创建了一个日期格式的变量,并用它来生成昨天的变量。
例如:
Public Sub SetDateVars()
TdDate = Date
TdStr = Format(Date, "DD-MM-YY")
YtdDate = Format(DateAdd("d", -1, TdDate))
YtdStr = Format(YtdDate, "DD-MM-YY")
Debug.Print TdDate
Debug.Print TdStr
Debug.Print YtdDate
Debug.Print YtdStr
End Sub
结果:
9/13/2020
13-09-20
9/12/2020
12-09-20