如题,谢谢!

解决方案 »

  1.   

    DateAdd("d", -1, DateAdd("m", 1, DateAdd("d", 1, "2011-2-28")))
      

  2.   

    cm = DateAdd("d", DateDiff("d", "2011-02-28", "2011-03-31"), "2011-02-28")
      

  3.   

    谢谢各位的回复,各位的回复我正在挨着试。如:起始日期是2011-1-30,用dateadd加一个月,连加12次。
      

  4.   

    Private Sub Command1_Click()
        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 
      

  5.   

    2月份单独判断,if month(YourDate)=2 
      

  6.   

    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 型值,则在计算前四舍五入为最接近的整数。 
      

  7.   

    呵,谢谢大家的回复。照我的惯势,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
      

  8.   

    For i = 1 To 12
    mydate = DateAdd("m", 1, mydate)
    MsgBox mydate这个累加到2月的时候得到28,之后就从28加了
      

  9.   

    For i = 1 To 12
    MsgBox DateAdd("m", i, mydate)
    Next
    ***********************
    这个每次都是从31加
      

  10.   

    For i = 1 To 12
    MsgBox DateAdd("m", i, mydate)
    Next
    ***************
    其实这个也不好,你只是运气从31加了,如果开始是2月,照旧会错,如果从30加也会错