2009-10-25 14 views

Respuesta

7

No puede.

La fecha máxima admitida por DateTimePicker es DateTimePicker.MaximumDateTime, que es 12/31/9998; DateTime.MaxValue es el 31/12/9999 23:59:59, que es un año y un día después.

¿Se puede usar ese DateTimePicker.MaximumDateTime en lugar de DateTime.MaxValue?

+1

Claro que puedo ahora que sé :) – programmernovice

+3

Alguna idea de por qué son diferentes? No pude encontrar ninguna explicación de eso en Google. – MusiGenesis

+1

No lo sé; Eché un vistazo rápido a la fuente y no encontré ninguna razón obvia. – SLaks

1

Tal vez esto es útil:

El valor de esta constante es equivalente a 23: 59: 59.9999999, 31 de diciembre de 9999, exactamente un 100 nanosegundos tick antes de 00:00:00, 1 de enero de 10000.

Algunos calendarios, como el UmAlQuraCalendar, admite un rango de fechas superior que es anterior a MaxValue. En estos casos, al intentar acceder a MaxValue en las asignaciones de variable o al formatear y analizar las operaciones se puede generar un ArgumentOutOfRangeException. En lugar de recuperar el valor de DateTime .. ::. MaxValue, puede recuperar el valor de la última fecha válida valor especificado de la cultura de la System.Globalization.CultureInfo.DateTimeFormat.Calendar.MaxSupportedDateTime propiedad.

descaradamente copiado de msdn

+1

¿Por qué sería útil? – SLaks

2

Sí se puede, pero es bastante sucia (utilizarlo en su propio riesgo). Básicamente, sobrescribe el MaxValue definido en DateTimePicker con MaxValue del objeto DateTime.

pega este código en el principal (o cualquier método de ejecutar durante el inicio):

var dtpType = typeof(DateTimePicker); 
var field = dtpType.GetField("MaxDateTime", BindingFlags.Public | BindingFlags.Static); 
if (field != null) 
{ 
    field.SetValue(new DateTimePicker(), DateTime.MaxValue); 
} 
Cuestiones relacionadas