首页 > 解决方案 > Xamarin Forms - 如何在 DatePicker 和 TimePicker 中获取正确的时间?

问题描述

我正在尝试在 Xamarin Forms 中为我的 DatePicker 和 TimePicker 获取正确的格式。

我需要以下列格式获取正确的日期和时间:

2020 年 12 月 5 日下午 4:12:34

但我一直以这种格式得到它:

2020 年 12 月 5 日 12:00:00 上午 17:31:23.2153540

我希望能够选择截止日期的日期和时间,并以正确的格式显示。

这是我的代码:

在我的 xaml 文件中:

<DatePicker x:Name="dueDatePicker" Date="{x:Static sys:DateTime.Today}" Format="MMM dd yyyy" MinimumDate="{x:Static sys:DateTime.Today}" HorizontalOptions="EndAndExpand" />
<TimePicker x:Name="dueTimePicker" HorizontalOptions="End" />

在我的 xaml cs 文件中,我正在使用此代码,但它以错误的格式显示:

dueDatePicker.Date.ToString() + " " + dueTimePicker.Time.ToString();

谢谢你。

标签: c#visual-studioxamarinxamarin.forms

解决方案


如果要显示格式 : 12/5/2020 04:12:34 PM,则需要先添加Formatfor TimePicker

<DatePicker x:Name="dueDatePicker"
            Date="{x:Static sys:DateTime.Today}"
            Format="MMM dd yyyy"
            MinimumDate="{x:Static sys:DateTime.Today}"
            HorizontalOptions="EndAndExpand" />
<TimePicker x:Name="dueTimePicker"
            Format="HH:mm:ss"
            HorizontalOptions="End" />

然后TimePicker将显示来自的格式Xaml,但是DatePicker需要使用其他格式将显示想要的效果。

代码如下:

if(dueTimePicker.Time.Hours > 12)
{
    Console.WriteLine("time is : " + dueDatePicker.Date.ToString("MM/d/yyyy") + dueTimePicker.Time.ToString() + " PM ");
}
else
{
    Console.WriteLine("time is : " + dueDatePicker.Date.ToString("MM/d/yyyy")  + dueTimePicker.Time.ToString() + " AM ");
}

控制台输出为:

09-29 13:51:41.771 I/mono-stdout(11803):时间是:09/29/2020 05:00:00 AM
09-29 13:51:59.149 I/mono-stdout(11803):时间是: 2020 年 9 月 29 日下午 17:00:00


推荐阅读