C# 时间选择器未在Xamarin表单中以12小时格式显示时间
我有一个要求,即无论设备的时间格式如何,我都必须将所有时间选择器和选定的时间格式更改为12小时。 这个问题是针对Android的。它在iOS中运行良好。 我使用自定义的时间渲染器 以下是我正在做的: 在XAML中:C# 时间选择器未在Xamarin表单中以12小时格式显示时间,c#,.net,xamarin,xamarin.forms,C#,.net,Xamarin,Xamarin.forms,我有一个要求,即无论设备的时间格式如何,我都必须将所有时间选择器和选定的时间格式更改为12小时。 这个问题是针对Android的。它在iOS中运行良好。 我使用自定义的时间渲染器 以下是我正在做的: 在XAML中: <customElements:CustomTimePicker x:Name="TimePickerName" Time="{Binding time}"> <StackLayout> <StackLayout.GestureRecognize
<customElements:CustomTimePicker x:Name="TimePickerName" Time="{Binding time}">
<StackLayout>
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Tapped="Handle_TimePickerTapped" />
</StackLayout.GestureRecognizers>
</StackLayout>
<TimePicker.Format>hh:mm tt</TimePicker.Format>
视图模型:(从数据库中获取当前项的时间)
在自定义渲染器(即CustomTimePicker类)中:
protected override void OnElementChanged(ElementChangedEventArgs<TimePicker> e)
{
base.OnElementChanged(e);
Control.TextSize = 14;
Control.Text = DateTime.Now.ToString("hh:mm tt");
}
public void OnTimeSet(Android.Widget.TimePicker view, int hourOfDay, int minute)
{
var time = new TimeSpan(hourOfDay, minute, 0);
this.Element.SetValue(Xamarin.Forms.TimePicker.TimeProperty, time);
var dateTime = new DateTime(time.Ticks);
var formattedTime = dateTime.ToString("h:mm tt", CultureInfo.InvariantCulture);
this.Control.Text = formattedTime;
}
protected override void OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
Control.TextSize=14;
Control.Text=DateTime.Now.ToString(“hh:mmtt”);
}
public void OnTimeSet(Android.Widget.TimePicker视图,int hourOfDay,int minute)
{
var时间=新的时间跨度(小时、天、分钟、0);
this.Element.SetValue(Xamarin.Forms.TimePicker.TimeProperty,time);
var dateTime=新的日期时间(time.Ticks);
var formattedTime=dateTime.ToString(“h:mm tt”,CultureInfo.InvariantCulture);
this.Control.Text=格式化时间;
}
我想要12小时格式的时间选择器,无论手机的时间格式如何,所选时间都应为12小时格式。
由于
OnTimeSet
方法,我可以将其转换为12小时,但这是第一次使用设备的时间格式设置。应该有一个IS24小时视图
你有保险吗
---编辑,嗯---
两个时钟,一个是12小时制,显示现在是12点24分
<TimePicker x:Name="TimePicker12">
<TimePicker.Format>hh:mm tt</TimePicker.Format>
</TimePicker>
这对我不起作用。此外,它只能在OnTimeSet方法中使用,该方法在第一次打开后被调用。我正在通过数据库调用从ViewModel绑定timepicker的time属性,因此第一次无法从xaml.cs绑定时间。仅适用于Android,不适用于IOS我很确定在xamarin中,计时器默认为12小时格式forms@G.hakim,即使设备格式是24小时?是的,当然不是这样对你有用吗?不,如果设备设置是24小时,它会显示24小时时钟和格式
protected override void OnElementChanged(ElementChangedEventArgs<TimePicker> e)
{
base.OnElementChanged(e);
Control.TextSize = 14;
Control.Text = DateTime.Now.ToString("hh:mm tt");
}
public void OnTimeSet(Android.Widget.TimePicker view, int hourOfDay, int minute)
{
var time = new TimeSpan(hourOfDay, minute, 0);
this.Element.SetValue(Xamarin.Forms.TimePicker.TimeProperty, time);
var dateTime = new DateTime(time.Ticks);
var formattedTime = dateTime.ToString("h:mm tt", CultureInfo.InvariantCulture);
this.Control.Text = formattedTime;
}
<TimePicker x:Name="TimePicker12">
<TimePicker.Format>hh:mm tt</TimePicker.Format>
</TimePicker>
<TimePicker x:Name="TimePicker24">
<TimePicker.Format>HH:mm</TimePicker.Format>
</TimePicker>
TimePicker12.Time = TimeSpan.FromMinutes(DateTime.Now.Minute);
TimePicker24.Time = TimeSpan.FromMinutes(DateTime.Now.Minute);