Visual Studio 中 datetimepicker 中的默认日期
Posted
技术标签:
【中文标题】Visual Studio 中 datetimepicker 中的默认日期【英文标题】:Default date in datetimepicker in visual studio 【发布时间】:2019-06-24 17:11:26 【问题描述】:如果用户在 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)
【问题讨论】:
Visual Studio 没有 DateTimePicker;它是一个开发工具。据推测,您正在使用其中一种 GUI 框架(Winforms、XAML 等)在 C# 或 VB.Net 中进行开发。你用的是哪一个?需要这些信息才能回答您的问题。 对不起,我不是铁杆开发者 :) 我使用的是 VB.net,应用程序类型:windows forms application 更好。 :-) 将Format
属性设置为Date
。
无论何时存储到 Access,请使用 DateTimePicker.Value.Date
而不是 DateTimePicker.Value
。 DateTime.Date property 将删除任何时间信息。
@KenWhite 谢谢 :) 我看到四种格式选项长短时间和自定义。我已经选择了 custom 并且 customFormat 设置为 dd-MM-yyyy 但是它没有帮助
【参考方案1】:
Access 没有 SQL Server 等短日期格式。数据类型列表见this link。
访问:
日期/时间,用于日期和时间,8 个字节SQL 服务器:
日期时间,从 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
【讨论】:
谢谢 djv。我在表单加载事件中添加了 Me.DateTimePicker1.Value = Date.Today,这实际上只在访问数据库中保存日期。但是,在我的表单中,我添加了新按钮,该按钮实际上重置了所有文本框并允许用户添加新条目。现在,如果他们不选择任何日期并将日期作为今天的日期,它会再次保存日期和时间。 Private Sub BtnAddNew_Click_1(sender As Object, e As EventArgs) 处理 btnAddNew.Click OrderdetailsBindingSource.AddNew() End Sub 再一次,它不仅将日期存储在数据库中,而是将日期以上午 12 点作为时间存储。当时间为上午 12 点时,Access 将其格式化为仅限日期。所以你也应该在按钮按下时设置Me.DateTimePicker1.Value = Date.Today
。
感谢 djv。这行得通。我之前添加了 Me.DateTimePicker1.Value = Date.Today 这个值,但是它在 OrderdetailsBindingSource.AddNew() 函数之前。我在 OrderdetailsBindingSource.AddNew() 函数之后添加了这个,现在我只能看到日期。非常感谢您的帮助:)【参考方案2】:
抱歉,如果我无法在 vb.net 中完美回答您 我会用vb给你一个答案(我的意思是它是正确的) 并在正确的 c# 中
我了解到,如果 DateTimePicker 的日期设置为今天,您希望代码将值保存在数据库中。
c#
if(dateTimePicker1.Value.Date == DateTime.Today)
//insert your code here
vb.net
if dateTimePicker1.Value.Date == DateTime.Today
//Code here
end if
this if 询问,DateTime 的纠察队日期是否与今天相同
如果您只想将日期的整个值保存在数据库中,如果选择的日期是今天,例如:“25.06.2019 17:25”,那么您将遇到问题。
如果你把它保存为字符串,你可以格式化它:
dateTimePicker1.Value.ToString("HH:mm dd.MM.yyyy")
或
dateTimePicker1.Value.ToString("HH:mm")
所以把第二个放在“else”中。
如果你只需要日期或时间,你可以像上面那样格式化。
(对不起,我不确定我是否理解您的问题,所以如果它对您没有帮助,请发表评论。我会回答)
【讨论】:
谢谢 LoaStaub。我只想在我的访问数据库中保存日期而不是时间。如果我默认不选择任何日期,它只会保存日期+时间,但是如果我选择任何日期,它只会保存日期。所以我只是想弄清楚如何将 datetimepicker 的默认值设置为只有日期而不是时间。 混淆在这句话I want to store the date only in the Access store when the user leaves the DateTimePicker to today's date
。可以解释为I want to store the date only, ... when the user leaves the DateTimePicker to today's date
或I want to store the date, only ... when the user leaves the DateTimePicker to today's date
,前者反映了OP的实际意图。
感谢 LoaStaub。这就是我在代码表单加载事件 Me.DateTimePicker1.Value = Date.Today 中所做的,同时从 vb 表单向数据库添加新条目。 Private Sub BtnAddNew_Click_1(sender As Object, e As EventArgs) 处理 btnAddNew.Click OrderdetailsBindingSource.AddNew() Me.DateTimePicker1.Value = Date.Today End Sub以上是关于Visual Studio 中 datetimepicker 中的默认日期的主要内容,如果未能解决你的问题,请参考以下文章
visual studio 2012中如何查看一个工程需要哪些dll文件???