Microsoft(R) Visual Basic(R) Scripting Edition DateAdd 函数 语言参考 起始页 | 版本 2 请参阅 --------------------------------------------------------------------------------描述 返回已添加指定时间间隔的日期。 语法 DateAdd(interval, number, date) DateAdd 函数的语法有以下部分:部分 描述 interval 必选。字符串表达式,表示要添加的时间间隔。有关数值,请参阅“设置”部分。 number 必选。数值表达式,表示要添加的时间间隔的个数。数值表达式可以是正数(得到未来的日期)或负数(得到过去的日期)。 date 必选。Variant 或要添加 interval 的表示日期的文字。 设置 interval 参数可以有以下值: 设置 描述 yyyy 年 q 季度 m 月 y 一年的日数 d 日 w 一周的日数 ww 周 h 小时 n 分钟 s 秒 说明 可用 DateAdd 函数从日期中添加或减去指定时间间隔。例如可以使用 DateAdd 从当天算起 30 天以后的日期或从现在算起 45 分钟以后的时间。要向 date 添加以“日”为单位的时间间隔,可以使用“一年的日数”(“y”)、“日”(“d”)或“一周的日数”(“w”)。 DateAdd 函数不会返回无效日期。如下示例将 95 年 1 月 31 日加上一个月: NewDate = DateAdd("m", 1, "31-Jan-95") 在这个示例中,DateAdd 返回 95 年 2 月 28 日,而不是 95 年 2 月 31 日。如果 date 为 96 年 1 月 31 日,则返回 96 年 2 月 29 日,这是因为 1996 是闰年。 如果计算的日期是在公元 100 年之前,则会产生错误。如果 number 不是 Long 型值,则在计算前四舍五入为最接近的整数。
呵,谢谢大家的回复。照我的惯势,2011-02-28加一个月就应该是2011-03-31,不知道原因,望众前辈解释。 用这种方法就会出现如题现象,连加12次不等于一年。For i = 1 To 12 mydate = DateAdd("m", 1, mydate) MsgBox mydate Next用这种方法就能得到正确结果For i = 1 To 12 MsgBox DateAdd("m", i, mydate) Next
For i = 1 To 12 mydate = DateAdd("m", 1, mydate) MsgBox mydate这个累加到2月的时候得到28,之后就从28加了
For i = 1 To 12 MsgBox DateAdd("m", i, mydate) Next *********************** 这个每次都是从31加
For i = 1 To 12 MsgBox DateAdd("m", i, mydate) Next *************** 其实这个也不好,你只是运气从31加了,如果开始是2月,照旧会错,如果从30加也会错
Dim i As Integer
Dim myDate As Date
myDate = "2011-1-31"
For i = 1 To 12
myDate = DateAdd("d", -1, DateAdd("m", 1, DateAdd("d", 1, myDate))) '等于"2011-3-31"
Debug.Print myDate
Next i
End Sub2011-02-28
2011-03-31
2011-04-30
2011-05-31
2011-06-30
2011-07-31
2011-08-31
2011-09-30
2011-10-31
2011-11-30
2011-12-31
2012-01-31
DateAdd 函数 语言参考
起始页 | 版本 2
请参阅
--------------------------------------------------------------------------------描述
返回已添加指定时间间隔的日期。
语法
DateAdd(interval, number, date)
DateAdd 函数的语法有以下部分:部分 描述
interval 必选。字符串表达式,表示要添加的时间间隔。有关数值,请参阅“设置”部分。
number 必选。数值表达式,表示要添加的时间间隔的个数。数值表达式可以是正数(得到未来的日期)或负数(得到过去的日期)。
date 必选。Variant 或要添加 interval 的表示日期的文字。
设置
interval 参数可以有以下值:
设置 描述
yyyy 年
q 季度
m 月
y 一年的日数
d 日
w 一周的日数
ww 周
h 小时
n 分钟
s 秒
说明
可用 DateAdd 函数从日期中添加或减去指定时间间隔。例如可以使用 DateAdd 从当天算起 30 天以后的日期或从现在算起 45 分钟以后的时间。要向 date 添加以“日”为单位的时间间隔,可以使用“一年的日数”(“y”)、“日”(“d”)或“一周的日数”(“w”)。
DateAdd 函数不会返回无效日期。如下示例将 95 年 1 月 31 日加上一个月: NewDate = DateAdd("m", 1, "31-Jan-95")
在这个示例中,DateAdd 返回 95 年 2 月 28 日,而不是 95 年 2 月 31 日。如果 date 为 96 年 1 月 31 日,则返回 96 年 2 月 29 日,这是因为 1996 是闰年。
如果计算的日期是在公元 100 年之前,则会产生错误。如果 number 不是 Long 型值,则在计算前四舍五入为最接近的整数。
用这种方法就会出现如题现象,连加12次不等于一年。For i = 1 To 12
mydate = DateAdd("m", 1, mydate)
MsgBox mydate
Next用这种方法就能得到正确结果For i = 1 To 12
MsgBox DateAdd("m", i, mydate)
Next
mydate = DateAdd("m", 1, mydate)
MsgBox mydate这个累加到2月的时候得到28,之后就从28加了
MsgBox DateAdd("m", i, mydate)
Next
***********************
这个每次都是从31加
MsgBox DateAdd("m", i, mydate)
Next
***************
其实这个也不好,你只是运气从31加了,如果开始是2月,照旧会错,如果从30加也会错