Estoy usando fechas de forma libre como parte de una sintaxis de búsqueda. Necesito analizar las fechas de las cadenas, pero solo conservar las partes de la fecha que están realmente especificadas. Por ejemplo, "1 de noviembre de 2010" es una fecha específica, pero "noviembre de 2010" es el rango de fechas "1 de noviembre de 2010" a "30 de noviembre de 2010".Fechas de análisis sin todos los valores especificados
Desafortunadamente, DateTime.Parse
y amigos PARSE estas fechas para la misma DateTime
:
DateTime.Parse("November 1, 2010") // == {11/1/2010 12:00:00 AM}
DateTime.Parse("November, 2010") // == {11/1/2010 12:00:00 AM}
Necesito saber qué partes de la realidad DateTime
se analizan y que se han adivinado por el analizador. Esencialmente, necesito DateTime.Parse("November, 2010") == {11/-1/2010 -1:-1:-1}
; Luego puedo ver que falta la porción del día y calcular el rango de fechas que cubre todo el mes.
(Internamente, C# tiene las DateTimeParse
y DateTimeResult
clases que analizan la fecha y preservan la información que necesito exactamente, pero en el momento de la fecha vuelve a las interfaces públicas que ha sido despojado de. Prefiero evitar la reflexión en estas clases, a menos que esa sea realmente la única ruta.)
¿Hay alguna forma de obtener DateTime.Parse
para decirme qué formato usó para analizar la fecha? ¿O puede el DateTime
devuelto tener marcadores de posición para piezas no especificadas? También estoy abierto a usar otro analizador de fechas, pero me gustaría que fuera tan confiable y flexible como el interno. Gracias por adelantado.
EDITAR: También he intentado ParseExact
, pero enumerar todos los formatos que puede manejar Parse
parece casi imposible. Parse
realmente acepta más formatos que los devueltos por DateTimeFormatInfo.GetAllDateTimePatterns
, que es una fuente tan canónica como puedo encontrar.
Consulte mi edición anterior. ParseExact parece ser insuficiente para el análisis de fecha general. – kevingessner