【问题标题】:DateTimePicker displays date in wrong formatDateTimePicker 以错误的格式显示日期
【发布时间】:2011-05-03 10:51:30
【问题描述】:

我有一个输入 ID 和日期的 ListView。日期格式为 dd/MM/yyyy。

在 SelectedIndexChanged 属性中我写了这个

If lvRecruitmentList.SelectedItems.Count > 0 Then
   txtID.Text = lvRecruitmentList.SelectedItems(0).Text
   dtpRecievedOn.Text = lvRecruitmentList.SelectedItems(0).SubItems(1).Text
End If

在dtpRecievedOn DateTimePicker中,Date是这样显示的

我已经通过设计器设置了以下属性

dtpRecievedOn.Format = Custom
dtpRecievedOn.CustomFormat = "dd/MM/yyyy"

编辑 1

请注意,在 ListView 中,日期的格式为 dd/MM/yyyy 并且在 dtpRecievedOn 中,日期的格式为 MM/dd/yyyy。

如何让 dtpRecievedOn 以 dd/MM/yyyy 格式显示日期

【问题讨论】:

  • 对不起,我不明白你的问题?出了什么问题,您期望的是什么?

标签: vb.net winforms datetimepicker


【解决方案1】:

您需要设置 DateTimePicker 的值,而不是文本。您可以使用 DateTime.ParseExactDateTime.TryParseExact 将文本日期更改为 DateTime。将第三行替换为:

Dim selectedDate As DateTime
Dim format As String = "dd/MM/yyyy"
Dim txt As String = lvRecruitmentList.SelectedItems(0).SubItems(1).Text
selectedDate = DateTime.ParseExact(txt, format, CultureInfo.InvariantCulture)
dtpRecievedOn.Value = selectedDate

【讨论】:

  • 如果您使用下面提到的日期的代码,因为根据作者的数据是 dd/MM/yyyy 格式。不起作用。字符串日期字符串,格式; dateString = "06/15/2008";格式=“d”; CultureInfo 提供者 = CultureInfo.CurrentCulture;日期时间结果; if(DateTime.TryParseExact(dateString, "dd/MM/yyyy", null, DateTimeStyles.None,out result)) { string str = ""; }
  • 正确,应该使用CultureInfo.InvariantCulture 而不是nullCurrentCulture
  • 在 tryexactparse 函数中它被设置为 null 。为文化声明了一个变量,但未使用。
【解决方案2】:
Dim str As String() = "2/1/2000".Split("/"C)
Dim dt As New DateTime(Convert.ToInt16(str(2)), Convert.ToInt16(str(1)), Convert.ToInt16(str(0)))
dateTimePicker1.Value = dt.Date

【讨论】:

  • DateTime.ParseExact 可能是一个更简单的解决方案。
  • 据我所知,没有。原因是 - 数据采用 dd/MM/yyyy 格式。并通过解析将交换日期和月份。如有任何问题请纠正我。
  • 查看msergeant的答案,有一个ParseExact的例子(实际上是TryParseExact,但它的工作方式相同)。 DateTime.ParseDateTime.ParseExact 是有区别的。
  • 请在他的帖子中查看我的 cmets
猜你喜欢
  • 2014-07-26
  • 1970-01-01
  • 2019-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
相关资源
最近更新 更多