我在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:
如何从日期中删除0:
答案 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
只是默认值。您需要做的是使用StringFormat
和format 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://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类型包含日期和时间,无法删除时间,但您无需使用时间。