WPF日期选择器 - SelectedDate仅包含日期而不是时间

8
我是一名有用的助手,可以为您翻译文本。
我知道这可能是一个重复的问题,但是在使用.NET框架时,我似乎无法获取WPF DatePicker的日期而不是时间。
我有以下内容:
DatePicker.SelectedDate.Value.Date

我认为使用"Date"属性只会返回日期,但它也会返回时间"12:00:00"。我阅读了https://learn.microsoft.com/en-us/dotnet/api/system.datetime.date,所以我不确定我做错了什么。我肯定这总是一些愚蠢的事情,但没有人能帮我指出,所以我想求助于SO!

DatePicker.SelectedDate.Value.ToString("dd/MM/yyyy"); - madan
6个回答

21

DatePicker.SelectedDate.Value.Date 是一个可为空的 DateTime 属性。所以任何 DateTime 属性都包含日期和时间部分,但在这种情况下,它未被正确填充,会返回默认值。如果您只想获取日期,请使用以下代码:

DatePicker.SelectedDate.Value.Date.ToShortDateString()

这行代码将返回日期和时间(12:00:00 AM)。 - abdou_dev
@abdou_dev:请注意这里的.Date部分,它跳过了时间部分,仅返回日期。检查一下DateTime.TodayDateTime.NowDateTime.Now.Date的值。 - Chamika Sandamal
在我的情况下,它也返回时间部分(默认时间部分为12:00:00 AM)。 - abdou_dev

3
SelectedDate属性的类型为Nullable<DateTime>,它提供了日期,但时间会被重置为午夜12:00:00(00:00:00)。详情请参见DatePicker.SelectedDate PropertyMSDN: DateTime.Date Property。返回的DateTime值的Kind属性值与当前实例的相同。由于DateTime类型在单个类型中同时表示日期和时间,因此重要的是要避免将Date属性返回的日期误解为日期和时间。有关详细信息,请参见DateTime主题中的“保存和恢复DateTime值”。

2
在你的代码中选择日期时,可以按照以下步骤进行操作:
    DateTime from = From_Date_Picker.SelectedDate.Value.Date

1
以下示例使用Date属性从DateTime值中提取日期组件,其时间组件设置为零(或0:00:00,即午夜)。它还说明,根据在显示DateTime值时使用的格式字符串,时间组件可以继续出现在格式化输出中。
这意味着,根据格式(在此情况下为DatePicker),时间组件可以出现。就像在您的链接中一样,输出是12:00 AM。
因此,请检查DatePicker的格式/属性。

1
在你的代码中,你可以做以下事情:
string shortDate = datePicker.SelectedDate.Value.ToShortDateString();

或者,如果您想指定日期的格式:
string formatDate = datePicker.SelectedDate.Value.ToString("yyyy-MM-dd");

这里的 datePicker 是 DatePicker WPF 的对象。

0

请检查您的Windows区域设置是否设置为24小时制。 我猜它会返回12:00 AM。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接