【问题标题】:datetime to DateTimePicker VB.Net in Long format and vice versa日期时间到 DateTimePicker VB.Net 的长格式,反之亦然
【发布时间】:2018-09-25 06:42:20
【问题描述】:

是否可以将 DateTimePicker(长格式)的值保存到日期时间(数据库)。然后从 datetime (datebase) 设置为 DateTimePicker 执行相反的操作。我们有更简单的代码吗?

我在 VB.Net Windows 窗体中使用 MySQL。

这是我在 vb.net 中的代码:

'" & date1.Value.ToString("yyyy-MM-dd") & " " & date1_time.Value.ToString("hh:mm:ss") & "." & Now.Millisecond & "'

在 MySQL 中: date1 日期时间

【问题讨论】:

  • 为什么不对选择器内部使用与数据库相同的格式。这不一定是最终用户所看到的。转换可以在应用程序代码或 JavaScript 中处理
  • 我假设您的意思是 Windows 窗体 DateTimePicker 但您需要指定。始终为技术和语言提供标签,例如Windows 窗体或 Web 窗体或 jQuery 等。
  • 如果是 WinForms,绝对没有理由甚至没有理由将您必须的 DateTime 值转换为 String。您从数据库中以DateTime 的形式获取它,然后以DateTime 的形式将其放入控件中,然后以DateTime 的形式从控件中取回它并将其以DateTime 的形式发送回数据库。唯一涉及文本的地方是控件向用户显示值时,因此除了设置控件的适当属性之外,您不必担心。 Value 属性是 DateTime 类型,因此格式无关紧要。
  • 对此我很抱歉.... 是的.. 我的意思是 vb,net 中的 windows 窗体

标签: mysql database vb.net date windows-forms-designer


【解决方案1】:

假设您正在谈论一个 Windows 窗体DateTimePicker,则没有什么可做的。控件的FormatCustomFormat 属性仅确定数据的显示方式。 Value 属性仍然是 DateTime 类型,并且没有格式。这只是一个数字。当您保存到数据库时,您保存了 DateTime 值,并且它也得到 - 或者至少应该得到 - 以其本机日期/时间数据类型存储在数据库中,因此格式再次不是问题。在 MySQL 中,您通常应该将 DATE 数据类型用于不带时间部分的日期,或者将 DATETIME 用于带有日期和时间的值。在整个过程中,您绝不应该自己将值转换为文本。该部分由DateTimePicker 控件处理。

如果您在数据库中使用了正确的数据类型,就像听起来一样,那么您将从数据库中获得DateTime。您只需将其直接分配给 value 属性,例如

myDateTimePicker.Value = CDate(myDataRow("MyColumn"))

或:

myDateTimePicker.Value = myDataReader.GetDateTime(myDataReader.GetOrdinal("MyColumn"))

要将数据保存回数据库,您只需以与创建任何其他数据相同的方式在命令上创建一个参数,然后将DateTime 分配给该参数的Value,例如

myCommand.Parameters.Add("@MyColumn", MySqlDbType.DateTime).Value = myDateTimePicker.Value

如果您不知道参数的工作原理,请立即查看,因为这是将变量插入 SQL 代码的唯一可接受的方式。

【讨论】:

  • 是的....我的意思是windows窗体..我们有没有更简单的方法将日期保存在数据库中然后做相反的事情...我通过将日期时间设置为日期时间选择器遇到了麻烦
  • 你遇到问题的原因是你正在做我告诉你不要做的事情,即创建一个String不要创建String。我将在我的答案中添加一些小代码示例。
  • 兄弟...我明白了... :)
猜你喜欢
  • 2012-12-01
  • 2011-05-05
  • 1970-01-01
  • 1970-01-01
  • 2015-08-16
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
  • 2013-07-14
相关资源
最近更新 更多