如何将datetimepicker的值设置为仅日期(.NET)

10
我在表单上有一个DateTimePicker,并将其自定义格式属性设置为"dd/MM/yyyy",当我运行此代码时:MessageBox.Show(dateTimePicker1.Value.ToString());,我得到这个值:"3/26/2010 1:26 PM"。如何从值中删除时间部分?我知道可以使用以下方法:
dateTimePicker1.Value.ToShortDateString();

但是我想将值属性设置为这个格式"dd/MM/yyyy",这样输出将会像这样"26/3/2010",因为我想在我的数据库(SQL)中存储这个值。

我该如何做到这一点?


如果您想在数据库中存储 System.DateTime 的日期部分,为什么要将格式化的字符串带入数据库呢?最好使用 dateTimePicker1.Value.Date,然后将其存储在您的列中(这可能是 dateTime 或 date - 根据您的数据库允许情况而定)。 - user57508
6个回答

17
使用dateTimePicker1.Value.Date来获取DateTime值的日期部分。
但需要注意,如果您想要将其解析为字符串,则使用dateTimePicker1.Value.Date.ToString会导致生成"26/03/2010 00:00:00"字符串,而使用类似MyString = CStr(dateTimePicker1.Value.Date)的语句将导致MyString为"26/03/2010"。

5

如果你的数据库中使用了字符串作为数据类型:

  dateTimePicker1.Value.Date.ToString("d");

如果数据类型是 DateTime:
  dateTimePicker1.Value.Date;

两者都会以dd/mm/yyyy格式返回日期,不包括时间。


也许您可以解释一下这如何回答OP的问题?另外,如果用户在其计算机上有不同的文化设置会发生什么? - Stewart_R
3
尽管这段代码可能回答了问题,但提供关于为什么和/或如何回答问题的额外背景信息将大大提高其长期价值。请[编辑]您的答案以添加一些说明。 - CodeMouse92
1
@JasonMc92 谢谢,我是stackoverflow的新手。我添加了一些解释。 - Trushant04

3
我假设您已经用当前日期和时间初始化了DateTimePicker:
dateTimePicker1.Value = DateTime.Now;

相反,用当前日期进行初始化:
dateTimePicker1.Value = DateTime.Today;

发生的情况如下:
  • 如果用户选择了日期,则 DateTimePicker.Value 属性将始终返回一个没有时间部分且 DateTime.Kind 设置为 Unspecified 的日期。

  • 如果用户未选择日期,则 DateTimePicker.Value 属性将返回用于初始化 DateTimePicker.Value 属性的值。如果您使用 DateTime.Now 进行初始化,则它将具有时间部分,且 DateTime.Kind 将设置为 Local


1

只需 MessageBox.Show(dateTimePicker1.Value.ToString("dd/MM/yyyy"));


我想要做到这个:datetimepicker.value = 26/03/2010有没有什么方法可以实现? - salhzmzm
datetimepicker.Value = new DateTime(2010, 3, 26);或者datetimepicker.Value = Convert.ToDateTime("26/03/2010"); - pierroz
3
请使用ParseExact方法,按照以下方式操作。将第一个参数中的日期字符串替换为程序中所使用的任何字符串变量。 DateTime dtResult = DateTime.ParseExact("26/03/2010", "d/M/yyyy", CultureInfo.InvariantCulture);更多信息请查看此处:http://msdn.microsoft.com/en-us/library/system.datetime.parseexact.aspx - Fadrian Sudaman
这种做法是与文化相关的,不被认为是最佳实践,因为此格式已经被方法.ToShortDateString()所覆盖。 - user57508

0
您可以在属性窗口(位于外观下方)中将DateTimePicker的“格式”设置为“短”。

虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,仅有链接的答案可能会失效。-【来自审查】 - svn

0
dateTimePicker1.Value.ToString("dd-MM-yyyy")

这应该可以工作


欢迎来到SO!请在您的问题和答案中使用可用的格式选项。试一试并[编辑]您的答案。 - Hille

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接