【问题标题】:VB.net Date Format Gridview dd/mm/yyyyVB.net 日期格式 Gridview dd/mm/yyyy
【发布时间】:2011-05-01 22:14:21
【问题描述】:

你好 我正在尝试更新 ms 访问数据库。我有一个带有我使用日期的网格视图:

Dim tBox As TextBox = CType(gridStaff.Rows(e.RowIndex).FindControl("sDate"), TextBox)

然后我想从此文本框中获取值并将其分配给日期变量。

Dim test As Date = CDate(tBox.Text)

我遇到的问题是,现在当我将测试变量放入我的 sql 更新查询时,它以这种格式存储日期。 mm/dd/yyyy 而不是我想要的 dd/mm/yyyy 格式。

我尝试了不同的方式来格式化它,我在网上阅读但还没有成功。任何建议都会很棒!

谢谢

【问题讨论】:

    标签: asp.net vb.net datetime date format


    【解决方案1】:

    您的问题是从 tBox.Text 到 Date 的转换,还是在 sql 更新查询级别? -- 你应该给sql语句一个严格类型的参数。从 tBox.Text 转换为 test 可能应该以文化感知的方式完成:

    '要转换和目标日期的字符串: 暗淡 dateString As String = "02/15/2011" 暗淡为日期

    ' 转换字符串时指定英语/美国文化: Dim cul As Globalization.CultureInfo = Globalization.CultureInfo.GetCultureInfo("en-US") d = Date.Parse(dateString, cul)

    您也可以依赖默认的文化,让 Date.Parse 完成工作而不指定文化。

    【讨论】:

    • 如此接近但到目前为止:(它工作到一定程度,但如果我去更改文本框中的日期,日期将返回美国格式而不是英国格式。
    • 如果我尝试在文本框中输入 16-5-2011,我会收到此错误:字符串未被识别为有效的日期时间。
    • 我明白你的意思,但问题是解析器需要提前知道日期格式。您也可以选择避免使用文本框并转而使用日历控件。 (或者使用任何其他类型的日期控件,您根本不依赖字符串格式。)
    【解决方案2】:

    尝试使用

    Dim test As Date =  DateTime.ParseExact(tBox.Text, "d/M/yyyy", CultureInfo.InvariantCulture)
    

    或者如果您的系统设置正确并且 CultureInfo.CurrentCulture 具有正确的日期格式,

    Dim test As Date =  DateTime.Parse(tBox.Text, CultureInfo.CurrentCulture )
    

    而不是CDate()

    【讨论】:

    • 嗨 Bala R。我尝试了您的建议,但出现此错误。字符串未被识别为有效的 DateTime。
    • @Bitzal,我错过了日期格式的结尾引号。我现在已经修好了。你可以试试吗?
    • @Bala R - 我注意到了这一点并自己进行了修复 - 虽然仍然有这个错误:(
    • 它只是一个通过文本框输入的日期。因此,它可以是任何日期,但采用该格式。无论哪种方式,我都无法将 String 崩溃为有效的日期时间错误。
    • @Bala R Dim tBox As TextBox = CType(gridStaff.Rows(e.RowIndex).FindControl("sDate"), TextBox) 暗淡测试 As Date = Date.ParseExact(tBox.Text, " d/m/yyyy", System.Globalization.CultureInfo.InvariantCulture) 这是我正在使用的代码 - 仍然获取 String 未被识别为有效的 DateTime。
    猜你喜欢
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 2015-03-22
    • 2015-09-23
    相关资源
    最近更新 更多