Vb.net DateTimePicker控件不显示AM/PM
我对使用自定义格式的DateTimePicker控件有问题,该格式包含两个字母的a.m./p.m.缩写 使用“en-US”CultureInfo DateTimeFormat.ShortTimePattern会导致 “h:mm tt” 但在DateTimePicker中使用以下代码将其设置为自定义格式:Vb.net DateTimePicker控件不显示AM/PM,vb.net,winforms,datetimepicker,datetime-format,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
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部件似乎是“唯一”的问题
谢谢你的帮助。
弗兰克,试试这个
dtpTime.Format = DateTimePickerFormat.Custom
dtpTime.CustomFormat = "hh:mm tt"
试试这个:
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
确保在Windows设置中也正确设置了时间格式以显示AM/PM。Windows中的时间格式也应设置为H:mm tt以正确显示结果。我也有同样的问题。这是“为什么”: 实际上,根据MS: 日期选择器不使用当前线程区域性:它使用用户区域设置。
因此,如果强制日期选择器自定义包含“tt”的格式,并且如果用户区域设置没有任何指示符。。。嗯,它不会显示。不起作用,我不知道为什么它会起作用。。。如果我检查没有提到“aa”,那么它被简单地解释为文本并显示“aa”是的,我知道,“en-US”文化的短时模式是“h:mm tt”,如上所述。问题是表示AM/PM的tt未显示。你可以自己试试……你能添加你的代码吗?那太好了,谢谢:-)@FrankE,同样的事情,我刚刚在表单上放置了datetime,将格式设置为custom,并使用我给h:mm tt的自定义格式。(所有这些都是在designer上完成的,已经成功了)。您的操作系统的语言是什么?也许它在你的电脑上工作是因为它是基于英语(?),我的是基于德语,这就是为什么我需要改变文化。这就是解决方案!设置当前线程区域性与DateTimePicker不兼容。根据报告和这些信息,当线程区域性与Windows用户的区域设置匹配时,它应该可以工作。愚蠢的设计。