.NET: convertir fecha y hora a decimal

En SQL Server (T-SQL) puede convertir una variable DateTime en valores decimales como este:

CONVERT(DECIMAL(20,10),@mytime)
Sample Input: 2012-07-27 08:29:20.000
Sample Output: 41115.3537037037

¿Existe algún método equivalente para convertir un DateTime en .NET (C# o VB) al mismo tipo de decimal?

Estoy buscando comparar tiempos en diferentes días.

Calculador

41115.3537037037 % 1 = .3537037037

Esto me permitiría comparar fácilmente los tiempos en diferentes fechas.

preguntado el 27 de julio de 12 a las 15:07

eso no parece muy útil. ¿Qué significa 41115.3537037037? -

Como dijo @JonSkeet, es la cantidad de días, la parte decimal es qué tan avanzado está el día. Al tomar la parte decimal, puede comparar rápidamente los tiempos en diferentes días. -

2 Respuestas

Parece que esto es "número de días desde el 1 de enero de 1900". En cuyo caso, usaría:

DateTime epoch = new DateTime(1900, 1, 1);
TimeSpan difference = date - epoch;
double days = difference.TotalDays;

Respondido 27 Jul 12, 15:07

Sé que especificó que desea comparar las horas de los días (obtener la parte decimal), pero dado que el título es cómo convertir DateTime a Decimal, aquí se explica cómo obtener el valor numérico completo en uno (partes enteras Y decimales). Puede hacer lo siguiente (VB.NET) y será equivalente a SQL Server:

Dim TimeZero As New DateTime(1900, 1, 1)
Dim MyTime As DateTime = DateTime.Parse("2012-07-27 08:29:20.000")
Dim DecResult As Decimal = DateDiff(DateInterval.Day, TimeZero, MyTime) + (MyTime.TimeOfDay.TotalSeconds / (24*3600))

Respondido 05 Feb 18, 21:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.