0

现在使用 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代码帮助。

4

3 回答 3

1

值的类型为Object。这是因为日期选择器的值可以是有效日期,也可以是空的。所以你需要:

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)
于 2009-08-27T07:54:14.627 回答
0

我假设您正试图从 dtpicker1 的值中减去一天?如果是这样,请执行以下操作:

sdate = DateToString(dtpicker1._Value.AddDays(-1))
于 2009-08-25T05:49:10.947 回答
0

有点不确定您要做什么,但是对于以下解决方案,我假设-1您是说您想获得日期前一天。如果是这样,那么使用

dtpicker1._Value.AddDays(-1).ToString

最重要的是,如果你想格式化输出的字符串,你可以使用格式字符串来做到这一点,例如

dtpicker1._Value.AddDays(-1).ToString("dd/MM/yyyy")

它将像“20/08/2009”一样打印出日期。

于 2009-08-25T06:13:03.067 回答