VB 当前日期 减去 一个月

来源:百度知道 编辑:UC知道 时间:2024/06/14 17:40:27
用的是两个控件 不知道有没有冲突
DTP2.Value = Now()
DTP1.Value = Now()-1个月

DTP1和DTP2都是 small型的....

本来想用
NewDate = DateAdd(d, -30, Now)

但结果报错,可能是类型不匹配,我不清楚
报的错是:无效的过程调用或参数

Private Function 减去整月(基准时间 As Date, 月数 As Integer) As Date
y = Year(基准时间)
m = Month(基准时间)
d = Day(基准时间)
m = m - 月数
Do While m < 1
m = m + 12
y = y - 1
Loop
减去整月 = CDate(y & "-" & m & "-" & d)
End Function

Private Sub Command1_Click()
Print 减去整月(Now, 1)
End Sub

有了这个函数,想减几个月就减几个月,不怕大月、不怕小月、也不怕闰月!

补充,你的函数因该这样用:
DateAdd("m", -1, Now())

DTP2.Value = Now()
DTP1.Value = DateAdd("m", -1, Now)

DateAdd的详细用法如下:
DateAdd(interval, number, date)

DateAdd返回包含一个日期的 Variant (Date),这一日期还加上了一段时间间隔。interval 参数决定这个间隔是用天,年,月等来算.详见以下的interval 参数设定值及其含义。

设置 描述

语法

DateAdd 函数语法中有下列命名参数:

部分 描述
interval 必要。字符串表达式,是所要加上去的时间间隔。
number 必要。数值表达式,是要加上的时间间隔的数目。其数值可以为正数(得到未来的日期),也可以为负数(得到过去的日期)。
date 必要。Variant (Date) 或表示日期的文字,这一日期还加上了时间间隔。

设置

interval 参数具有以