问题
I'm having a problem with a DateTimePicker control using a custom format which includes the the two-letter A.M./P.M. abbreviation.
Using an "en-US" CultureInfo DateTimeFormat.ShortTimePattern results in "h:mm tt".
But setting this as custom format in a DateTimePicker with the following code:
Dim curCul As CultureInfo = New CultureInfo("en-US")
dtpTime.Format = DateTimePickerFormat.Custom
dtpTime.CustomFormat = curCul.DateTimeFormat.ShortTimePattern
results in only the hour and the minutes being displayed. I however also need the AM/PM part.
Examples:
11:04 AM is displayed as 11:04
2:00 PM is displayed as 2:00
Additional remark: I noticed that the DateTimePicker keeps track of the correct time. If I increase the time (I'm using ShowUpDown = true for this DateTimePicker control) and increase the hour by 12 and save the changes into the database, the AM/PM has changed. So it seems "only" to be an issue about displaying the AM/PM part.
Thanks for any help. Frank
回答1:
Try this
dtpTime.Format = DateTimePickerFormat.Custom
dtpTime.CustomFormat = "hh:mm tt"
回答2:
I have the same issue. This for the "Why" : Actually according to MS : https://support2.microsoft.com/Default.aspx?scid=kb%3ben-us%3b889834&x=18&y=19 Date picker don't use the current thread culture : it uses the user regional settings. SO if you force the date picker custom format something containing "tt", and if the user regional setting doesnt have any designator ... well it won't be shown.
回答3:
try this:
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
回答4:
Make sure that in Windows settings you also have set time format properly to display AM/PM. Time format in Windows should be also set to H:mm tt to display your result properly.
来源:https://stackoverflow.com/questions/12577838/datetimepicker-control-does-not-show-am-pm