每当用户选择日期时,如何在DateTimePicker中设置默认小时?

时间:2019-04-30 20:02:46

标签: c# datetime datetimepicker windows-forms-designer

我有两个DateTimePickers,一个叫FechaEntrada,另一个叫FechaSalida

我希望每次用户选择日期时都将FechaEntrada.Value设置为"whatever_date_the_user_picked 00:00:00",将FechaSalida.Value设置为"whatever_date_the_user_picked 23:59:59"

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

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

1 个答案:

答案 0 :(得分:1)

进行设置,以便用户仅看到/选择一个日期:

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

致电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)时间的变化。

enter image description here

enter image description here

enter image description here