Как удалить 00:00:00 из свойства DateTime - PullRequest
1 голос
/ 07 июня 2019

У меня есть ListView с полем DateTime, в котором отображается 00:00:00 на Label, что совсем не требуется.

public DateTime? StartDate
{
    get { return _startDate; }
    set
    {
        SetProperty(ref _startDate, value);
        //StartDate = DateTime.ParseExact(StartDate.ToString(), "dd/MM/yyyy", CultureInfo.InvariantCulture); NOT WORKING
    }
}

Я пытался удалить его, используя строку ниже, но не работал

StartDate = DateTime.ParseExact(StartDate.ToString(), "dd/MM/yyyy", CultureInfo.InvariantCulture); //NOT WORKING

код, отображающий его

<StackLayout Orientation="Horizontal">
    <Label HorizontalOptions="Center" VerticalOptions="Center" Text="{Binding StartDate}" />
    <Label HorizontalOptions="Center" VerticalOptions="Center" Text="To" />
    <Label HorizontalOptions="Center" VerticalOptions="Center" Text="{Binding EndDate}" />
</StackLayout>

ListCell:

enter image description here

Как я могу удалить 0 с даты:

Ответы [ 4 ]

4 голосов
/ 07 июня 2019

Это не то, как DateTime работает в C #, позвольте мне привести пример:

// This will print '01.01.2000 00:00:00'
Console.WriteLine(DateTime.ParseExact("01/01/1970", "dd/MM/yyy", CultureInfor.InvariantCulture));

Это ожидается, потому что каждое свойство в структуре DateTime имеет значение после конструктора, 00:00:00 является просто значением по умолчанию. То, что вам нужно сделать, это отформатировать его там, где вы его отображаете (как на этикетке), используя StringFormat и спецификатор формата для DateTime , который вам, вероятно, нужен - d. Итак, ваш xaml должен выглядеть так:

<StackLayout Orientation="Horizontal">
    <Label HorizontalOptions="Center" VerticalOptions="Center" Text="{Binding StartDate, StringFormat='{0:d}'}" />
    <Label HorizontalOptions="Center" VerticalOptions="Center" Text="To" />
    <Label HorizontalOptions="Center" VerticalOptions="Center" Text="{Binding EndDate, StringFormat='{0:d}'}" />
</StackLayout>
2 голосов
/ 07 июня 2019

Необходимо отформатировать привязку в XAML

https://blogs.msdn.microsoft.com/vsdata/2009/07/06/customize-format-of-datetime-string-in-wpf-and-winform-data-binding/

https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings

<Label HorizontalOptions="Center" VerticalOptions="Center" Text="{Binding StartDate, StringFormat='{0:d}'}" />

, например.

0 голосов
/ 07 июня 2019

date.ToString("d") Существуют и другие форматы, но «d» - короткая дата. Вам нужно изменить выходную строку, а не сам DateTime. Тип DateTime содержит дату и время, как следует из названия, и удаление времени невозможно, но вам не нужно использовать время.

0 голосов
/ 07 июня 2019

Используйте StartDate.ToShortDateString () вместо StartDate.ToString ().ToShortDateString возвращает строку, которая содержит краткое представление строки даты текущего объекта DateTime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...