2016-07-15 9 views
0

Ich habe ein UITextField, das beim Klicken einen DatePicker öffnet. Ich möchte Zeit in der TextField- in hh gezeigt werden: mm tt (wie 14.10)Xamarin.iOS UITextField Datumsformat funktioniert nicht

void InitTimePicker() 
{ 
    timePicker = new ModalPickerViewController(ModalPickerType.Date, "Select A Time", this) 
    { 
     HeaderBackgroundColor = UIColor.Red, 
     HeaderTextColor = UIColor.White, 
     TransitioningDelegate = new ModalPickerTransitionDelegate(), 
     ModalPresentationStyle = UIModalPresentationStyle.Custom 
    }; 
    timePicker.DatePicker.Mode = UIDatePickerMode.Time; 
    timePicker.OnModalPickerDismissed += (sim, ea) => 
    { 
     var timeFormatter = new NSDateFormatter() 
     { 
      DateFormat = "hh:mm tt" 
     }; 
     vitalEntryTimeTextField.Text = timeFormatter.ToString(timePicker.DatePicker.Date); 
    }; 
    vitalEntryTimeTextField.ShouldBeginEditing = (textView) => 
    { 
     textView.ResignFirstResponder(); 
     PresentViewControllerAsync(timePicker, true); 
     return true; 
    }; 
} 

die Datepicker-Shows und alles funktioniert. aber wenn ich die Zeit im Datepicker wähle und done klicke, ist die in der TextField angezeigte Zeit wie 2:10. AM/PM zeigt nicht an, obwohl ich angegeben habe

DateFormat = "hh:mm tt" 

Was mache ich hier falsch?

Antwort

1

Hier verwenden Sie einen NSDateFormatter, die aus dem iOS SDK ist aber die DateFormat Angabe der Verwendung C# specifiers

AM/PM wird nicht angezeigt, wenn das iOS-Gerät 24 Stunden Format hat eingeschaltet:

Einstellungen -> Allgemein -> Datum & Time -> 24-Stunden-

Natürlich kann man nicht 24 Stunden-Zeit garantiert nicht auf jedem devic aktiviert sein, e.

Sie können das Gebietsschema für das Zeitformat angeben. Insbesondere verwendet en_US standardmäßig 12 Stunden.

NSLocale myLocale = new NSLocale("en_US"); 
var timeFormatter = new NSDateFormatter() 
{ 
    Locale = myLocale, 
    DateFormat = "hh:mm a" 
}; 

Dies würde Ihnen etwas wie 01:15 PM geben.

Verwenden Sie HH:mm a, um Ihnen etwas wie 13:15 PM zu geben.