6

我在使用包含两个字母 AM/PM 缩写的自定义格式的 DateTimePicker 控件时遇到问题。

使用“en-US”CultureInfo DateTimeFormat.ShortTimePattern 会产生“h:mm tt”。

但是使用以下代码在 DateTimePicker 中将其设置为自定义格式:

Dim curCul As CultureInfo = New CultureInfo("en-US")
dtpTime.Format = DateTimePickerFormat.Custom
dtpTime.CustomFormat = curCul.DateTimeFormat.ShortTimePattern

结果只显示小时和分钟。然而,我还需要 AM/PM 部分。

例子:

上午 11:04 显示为 11:04

下午 2:00 显示为 2:00

补充说明:我注意到 DateTimePicker 跟踪正确的时间。如果我增加时间(我为此 DateTimePicker 控件使用 ShowUpDown = true)并将小时数增加 12 并将更改保存到数据库中,则 AM/PM 已更改。因此,显示 AM/PM 部分似乎“仅”是一个问题。

谢谢你的帮助。坦率

4

4 回答 4

12

尝试这个

dtpTime.Format = DateTimePickerFormat.Custom
dtpTime.CustomFormat = "hh:mm tt"
于 2012-09-25T07:12:30.487 回答
3

我有同样的问题。这对于“为什么”:实际上根据 MS:https ://support2.microsoft.com/Default.aspx?scid=kb%3ben-us%3b889834&x=18&y=19 日期选择器不要使用当前的线程文化:它使用用户区域设置。因此,如果您强制日期选择器自定义格式包含“tt”的内容,并且如果用户区域设置没有任何指示符......那么它将不会显示。

于 2015-04-14T10:34:16.773 回答
1

尝试这个:

Private Sub mainform_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Enabled = True
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Label7.Text = DateTime.Now.ToString("MMM dd yyyy  hh:mm:ss tt")
End Sub
于 2014-07-21T14:06:41.950 回答
1

确保在 Windows 设置中您还正确设置了时间格式以显示 AM/PM。Windows 中的时间格式也应设置为 H:mm tt 以正确显示您的结果。

于 2014-10-23T01:43:22.290 回答