DateTimePicker控件不显示AM / PM

时间:2012-09-25 07:06:24

标签: vb.net winforms datetimepicker datetime-format

我使用自定义格式的DateTimePicker控件出现问题,该格式包含两个字母的A.M./P.M.缩写

使用“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 AM显示为11:04

2:00 PM显示为2:00

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

感谢您的帮助。 弗兰克

4 个答案:

答案 0 :(得分:7)

试试这个

dtpTime.Format = DateTimePickerFormat.Custom
dtpTime.CustomFormat = "hh:mm tt"

答案 1 :(得分:3)

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

答案 2 :(得分: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

答案 3 :(得分:0)

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