vb.net - Visual Studio 中 datetimepicker 中的默认日期
问题描述
如果用户在 DateTimePicker 中选择日期,它只会选择日期,这正是我所需要的。但是,如果用户没有选择任何日期并将 DateTimePicker 保留为今天的日期,它会显示日期 + 时间。数据存储在 Access 数据库中。当用户将 DateTimePicker 保留到今天的日期(不更改任何日期)时,我只想将日期存储在 Access 存储中。
Me.DateTimePicker1.CustomFormat = "dd-MM-yyyy"
Me.DateTimePicker1.DataBindings.Add(New System.Windows.Forms.Binding("Value", Me.OrderdetailsBindingSource, "OrderDate", True))
Me.DateTimePicker1.DataBindings.Add(New System.Windows.Forms.Binding("Text", Me.OrderdetailsBindingSource, "OrderDate", True))
Me.DateTimePicker1.Font = New System.Drawing.Font("Tahoma", 10.2!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.DateTimePicker1.Format = System.Windows.Forms.DateTimePickerFormat.Custom
Me.DateTimePicker1.Location = New System.Drawing.Point(158, 39)
Me.DateTimePicker1.Name = "DateTimePicker1"
Me.DateTimePicker1.Size = New System.Drawing.Size(294, 28)
Me.DateTimePicker1.TabIndex = 2
Me.DateTimePicker1.Value = New Date(2019, 6, 18, 0, 0, 0, 0)
解决方案
Access 没有 SQL Server 等短日期格式。有关数据类型列表,请参阅此链接。
使用权:
- 日期/时间,用于日期和时间, 8 个字节
SQL 服务器:
- datetime,从 1753 年 1 月 1 日到 9999 年 12 月 31 日,精度为 3.33 毫秒, 8 个字节
- 日期,仅存储日期。从 0001 年 1 月 1 日到 9999 年 12 月 31 日, 3 个字节
因此 Access 只有一种必须能够存储时间的日期/时间类型,它与 SQL Server 日期时间具有相同的字节数。您看到的没有时间戳的日期实际上是上午 12 点。这就是您在 DateTimePicker 上设置日期/时间时所做的事情Me.DateTimePicker1.Value = New Date(2019, 6, 18, 0, 0, 0, 0)
。顺便说一句,这是您最好的解决方案,将 DateTimePicker 设置为今天的日期(只是使用我提到的 DateTime.Date 属性的日期部分)。
要解决您的问题,请在以下位置执行此操作Form_Load
:
Me.DateTimePicker1.Value = Now.Date ' this makes it today at 12 AM
如果您想更好地了解发生了什么,请随时查看您的 DateTimePicker 的值,以查看其中始终存在时间,即使是上午 12 点:
MessageBox.Show($"{DateTimePicker1.Value:yyyy-MM-dd HH:mm:ss}")
并在您的数据库上运行此查询,以查看 Access 字段中也始终存在时间Date/Time
,并且 Access 自动隐藏了凌晨 12 点的时间:
select
orderdate
, format(orderdate, 'General Date') as GeneralDate
, format(orderdate, 'Short Time') as ShortTime
, format(orderdate, 'Medium Time') as MediumTime
, format(orderdate, 'Long Time') as LongTime
, format(orderdate, 'Short Date') as ShortDate
, format(orderdate, 'Medium Date') as MediumDate
, format(orderdate, 'Long Date') as LongDate
from orderdetails
推荐阅读
- python - 读取python中的输入并在发生错误时转到下一行
- ios - 如何将 UICollectionViewController 的自定义初始化程序与 UICollectionViewCompositionalLayout 一起使用?
- python-3.x - Kivy 无法 mainApp.run()
- terminal - zshrc 文件包含两个路径
- python - 使用数据库值显示图像
- python - 重新创建没有迁移文件夹的 django 迁移
- vim - MacVim GUI 不使用 XDG vimrc
- python - 什么时候在 Python 中创建子进程?
- r - ggplot facet_wrap 多个面板
- git - 获取 Cherry-Pick 冲突