现在使用VS 2008
在我使用VB 6之前,现在我已升级到VB 2008。
VB6代码
sdate = DateToString(dtpicker1 - 1)
edate = DateToString(dtpicker2)
以上代码工作正常。
升级到VB 2008后
sdate = DateToString(dtpicker1._Value)
edate = DateToString(dtpicker2._Value)
如果我把
sdate = DateToString(dtpicker1._Value - 1)
显示错误。
如何编写像dtpicker1 - 1
这样的代码需要VB代码帮助。
答案 0 :(得分:1)
值为Object
类型。
这是因为datepicker的值可以是有效日期,也可以是空。所以你需要:
If IsDate(dtpicker1._Value) Then
sdate = CDate(dtpicker1._Value).AddDays(-1).ToShortDateString()
End If
如果值为空,则它实际上具有System.DBNull
类型,这意味着对于转换为字符串,您可以定义两个具有相同名称但不同参数类型的函数:
Public Function DateToString(ByVal _date As Date) As String
Return _date.ToShortDateString()
End Function
Public Function DateToString(ByVal _date As DBNull) As String
Return "No date selected!"
End Function
然后,您可以将以前的代码修改为:
Dim theDate As Object
theDate = dtpicker1._Value
If IsDate(theDate) Then
theDate = CDate(theDate).AddDays(-1)
End If
sdate = DateToString(theDate)
答案 1 :(得分:0)
我假设你试图从dtpicker1的值减去一天?如果是这样,请执行以下操作:
sdate = DateToString(dtpicker1._Value.AddDays(-1))
答案 2 :(得分:0)
不确定你想要做什么,但是对于以下解决方案,我假设你用-1表示你想要在日期前一天获得。 如果是,那么使用
dtpicker1._Value.AddDays(-1).ToString
最重要的是,如果要格式化出来的字符串,可以使用格式字符串,例如
dtpicker1._Value.AddDays(-1).ToString("dd/MM/yyyy")
将打印日期,如“20/08/2009”。