首页 > 解决方案 > 每次用户选择日期时,如何在 DateTimePicker 中设置默认小时?

问题描述

我有两个 DateTimePickers,一个是命名FechaEntrada的,另一个是FechaSalida.

每次用户选择日期时,我都想设置FechaEntrada.Value"whatever_date_the_user_picked 00:00:00"和。FechaSalida.Value"whatever_date_the_user_picked 23:59:59"

我需要比较 dtpickers 中的两个值,以便我可以使用在这两个日期之间选择的值填充 DataBase 中的 DatagridView。

在我的 Windows 窗体中,用户不能选择小时,只能选择日期。我怎样才能做到这一点?这看起来很简单,但我在任何地方都找不到解决方案。

标签: c#datetimedatetimepickerwindows-forms-designer

解决方案


让它让用户只看到/选择一个日期:

FechaEntrada.Format = DateTimePickerFormat.Custom;
FechaEntrada.CustomFormat = "yyyy-MM-dd"; //or whatever date you want
FechaSalida.Format = DateTimePickerFormat.Custom;
FechaSalida.CustomFormat = "yyyy-MM-dd"; //or whatever date you want

当您想获取日期时:

FechaEntrada.Value.Date; //"whatever_date_the_user_picked 00:00:00"
FechaSalida.Value.Date.AddDays(1).AddSeconds(-1); //"whatever_date_the_user_picked 23:59:59".

DateTimePicker.Value返回一个日期时间

调用DateTime.Date给出的日期为午夜 00:00:00(它仍然是日期时间) - https://docs.microsoft.com/en-us/dotnet/api/system.datetime.date?view=netframework-4.8

调用AddDays(1)并将AddSeconds(-1)日期向前滚动一天并向后滚动一秒,因此:

01-Jan-2000 12:34:56
01-Jan-2000 00:00:00 //.Date
02-Jan-2000 00:00:00 //.AddDays(1)
01-Jan-2000 23:59:59 //.AddSeconds(-1)

这就是salida的时间变化。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述


推荐阅读