Xamarin.iOS UITextField 日期格式不起作用

本文关键字:格式 不起作用 日期 UITextField iOS Xamarin | 更新日期: 2023-09-27 17:57:14

我有一个UITextField,点击后会打开一个DatePicker。我希望时间以 hh:mm tt 显示在文本字段中(例如下午 2:10

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;
    };
}

日期选择器显示,一切正常。 但是当我在日期选择器中选择时间并单击完成时,文本字段中显示的时间类似于 2:10。尽管我指定了AM/PM但没有显示

DateFormat = "hh:mm tt"

我在这里做错了什么?

Xamarin.iOS UITextField 日期格式不起作用

这里使用的是来自 iOS SDK 的NSDateFormatter,但使用 C# 说明符指定DateFormat

当 iOS 设备打开 24 小时格式时,将不会显示 AM/PM:

设置 ->

常规 -> 日期和时间 -> 24 小时

显然,您不能保证不会在每个设备上启用24小时时间。

您可以指定时间格式的区域设置。具体来说,en_US默认使用 12 小时的时间。

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

这会给你类似的东西 01:15 PM .

使用HH:mm a给你类似的东西 13:15 PM .