Xamarin Forms — Как получить правильное время в DatePicker и TimePicker?

#c# #visual-studio #xamarin #xamarin.forms

#c# #visual-studio #xamarin #xamarin.forms

Вопрос:

Я пытаюсь получить правильный формат для моих DatePicker и TimePicker в формах Xamarin.

Мне нужно получить правильную дату и время в следующем формате:

05.12.2020 04:12:34 вечера

Но я продолжаю получать его в этом формате:

5.12.2020 12:00:00 AM 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();
  

Спасибо.

Комментарии:

1. если вы просто используете ToString без указания формата, он будет использовать стандартный формат для вашей локали. См. learn.microsoft.com/en-us/dotnet/standard/base-types /…

Ответ №1:

Если вы хотите показать формат : 12/5/2020 04:12:34 PM , вам нужно сначала добавить Format for 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): время: 29.09.2020 05:00:00
УТРА 09-29 13:51:59.149 I / mono-stdout(11803): время: 29.09.2020 17:00:00 вечера