如何从DateTime属性中删除00:00:00

时间:2019-06-07 07:09:50

标签: c# xamarin mvvm xamarin.forms

我在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 个答案:

答案 0 :(得分:4)

这不是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只是默认值。您需要做的是使用StringFormatformat specifier for 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>

答案 1 :(得分:2)

您必须格式化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}'}" />

例如。

答案 2 :(得分:0)

使用StartDate.ToShortDateString()代替StartDate.ToString()。 ToShortDateString返回一个字符串,其中包含当前DateTime对象的短日期字符串表示形式。

答案 3 :(得分:0)

date.ToString("d") 还有其他格式,但“ d”是短日期。您需要更改输出字符串,而不是DateTime本身。顾名思义,DateTime类型包含日期和时间,无法删除时间,但您无需使用时间。