如何将字符串转换为datetime

时间:2011-09-27 08:58:45

标签: vb.net

使用VB.Net

当我单击gridview列时,所选列项应显示在日期时间选择器

GridView Column值是字符串,datetime picker数据类型是datetime

代码

 Private Sub gridview1_CellContentDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles gridview1.CellContentDoubleClick
        Dim i As Integer
        i = gridview1.CurrentRow.Index
        Dim dt As String = gridview1.Item(1, i).Value
        datetimepicker1.value = CDate(dt)
 End Sub

当我点击gridview列时,它显示错误为“从字符串转换”25/09/2011“输入'日期'无效”

如何解决上述问题

需要VB.Net代码帮助....

2 个答案:

答案 0 :(得分:2)

此问题与区域设置有关,因为CDATE()函数需要以下列格式提供日期值:MM / DD / YYYY(MM =月,DD =日,YYYY =年)。这意味着英国的代码失败,即DD / MM / YYYY。通过25/09/2011转换为:

  • 月= 25
  • Day = 09
  • Year = 2011

如果您使用的值是一个字符串,则在将其传递给CDate()函数之前,您需要解析字符串值以提取正确的值:

Private Sub gridview1_CellContentDoubleClick(ByVal sender As System.Object, _
    ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
    Handles holidaygrid.CellContentDoubleClick

    textbox1.Text = DateTime.ParseExact( _
        gridview1.Item(1, gridview1.CurrentRow.Index).Value, _
            "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString()

 End Sub

答案 1 :(得分:1)

如果您事先知道预期的日期格式,请使用DateTime.ParseExact,例如:

datetimepicker1.Value = DateTime.ParseExact(dt, "dd/MM/yyyy", CultureInfo.InvariantCulture)