String vb.net-将数据表的datetime列格式化为yyyy/MM/dd HH:MM字符串

String vb.net-将数据表的datetime列格式化为yyyy/MM/dd HH:MM字符串,string,vb.net,datetime,date-conversion,String,Vb.net,Datetime,Date Conversion,我似乎不知道代码里写了什么。下面是一个屏幕截图,用于查看错误消息、代码和变量的内容 还有更大一部分的代码: For Each value As DataColumn In dt2.Columns If value.DataType = System.Type.GetType("System.DateTime") Then dq = dq & value.ColumnN

我似乎不知道代码里写了什么。下面是一个屏幕截图,用于查看错误消息、代码和变量的内容

还有更大一部分的代码:

       For Each value As DataColumn In dt2.Columns
                    If value.DataType = System.Type.GetType("System.DateTime") Then
                        dq = dq & value.ColumnName & " = '" & r2.Item(value.ColumnName).ToString("yyyy/MM/dd HH:mm:ss") & "' and "
                    End If

            Next


我做错了什么?

这只是编译,因为您有选项“严格关闭”(no go)。您必须将从
r2.Item(value.ColumnName)
返回的对象强制转换为
日期
。这也解决了这个问题,您可以使用
字段

r2.Field(Of Date)(value.ColumnName).ToString("yyyy/MM/dd HH:mm:ss")

由于您是德国人,请注意,您的格式字符串可能不会提供您期望的内容,而是类似于
2021.02.23 15:00:24
。如果您想
2021/02/23 15:00:24
您需要使用
ToString(“yyyy/MM/dd HH:MM:ss”,CultureInfo.InvariantCulture)
。请参阅:

Write Convert.ToDateTime(value.ColumnName).ToString(“yyyy/MM/dd HH:MM:ss”),这将解决问题。@HardikShah谢谢您,这似乎很有效。。。你介意把它贴出来作为答案并解释一下发生了什么吗?谢谢!它现在可以工作了。。我现在遇到的问题是:在数据库中,它保存为
2021-02-08 15:00:24
。我读了它,并把它放在一个数据表中。当我迭代datatable时,datatable包含
2021-08-02 15:00:24
将值传递给datatable时,是否有方法指定日期时间格式?@sharkyergy:a
datetime
在数据库中或
Date
(在VB.NET中)没有任何格式,它们只有一个值。当您想要显示此值时,可以使用
ToString
为其提供格式,就像您在代码中所做的那样。但决不要在数据库中将其存储为字符串,也不要过早地在后端代码中将其转换为字符串。在你想把它显示在某个地方之前,先这样做。它是数据库中的一个日期时间。。。我所做的唯一转换就是你在这里看到的。。但不知何故,这是颠倒的月份和天数。。正如您在上面的屏幕截图中看到的,r2包含
#8/2/2021…等#
这是2月8日。。。但是一旦我用你发布的代码转换它,我就得到了8月2日…@Sharkyergy:不,你把调试器窗口中看到的东西和它的实际含义混淆了。日期格式内置于调试器中。在VB.NET中,调试器窗口以以下格式显示日期:
#M/d/yyyy hh:mm:ss AM/PM
。所以第一个月是这个月。这就是我之前评论的意思,日期只有一个值,格式由GUI应用。。非常感谢。