Pregunta

Estoy creando una nueva aplicación web ASP.NET basada en una heredada (ASP clásica). La gente que construyó este código 4, hace 5 años, usó muchas funciones de VBScript como DateDiff.

Actualmente estoy trabajando en un simulador que hace muchos cálculos con fechas. Y estoy obteniendo una diferencia molesta entre estas fechas porque no tengo una manera fácil de obtener la diferencia entre los meses en c # como lo hicieron en VB 6.

Por lo tanto, elijo la ruta de uso del DateAndTime.DateDiff desde el espacio de nombres Microsoft.VisualBasic en mi aplicación web ASP.NET.

¿Saben si hay algunas implicaciones en eso? Estoy un poco preocupado con este enfoque.

Saludos,

¿Fue útil?

Solución

La única implicación es que está agregando otro conjunto a su implementación, y está utilizando la funcionalidad que muchos desarrolladores de C # (otras personas que podrían necesitar para mantener su código) no conocen. Pero personalmente no creo que haya mucho mal con eso. La documentación de la Biblioteca MSDN suele ser buena, y también puede agregar algunos comentarios si desea explicar por qué la está utilizando.

Editar: También quiero señalar que Microsoft.VisualBasic se implementó desde cero para .NET. No contiene código antiguo.

Otros consejos

Una posibilidad es usar el TimeSpan como lo indica Itay, pero dividir por 30.4375 (el promedio de días por mes), ignorando los meses fraccionarios. Esto es lo suficientemente cercano para las cosas en las que estoy trabajando actualmente, pero puede que no sea lo suficientemente preciso en función de sus necesidades. Por ejemplo, la diferencia entre el 1 de febrero y el 1 de marzo sería 0, que (basado en una definición de mes de 30.4375 días) es correcta; Sin embargo, puede que no sea correcto para sus propósitos particulares.

Es bueno que le preocupe eso, porque no debe usar ninguno de los clasificados en el espacio de nombres VisualBasic.

La biblioteca .net ofrece una solución mucho mejor llamada TimeSpan, utilícela de la siguiente manera: (dt1 y dt2 son DateTime s)

 TimeSpan ts = dt2 - dt1; //Or ts = dt1.Subtract(dt2)

En lo que me gustaría ayudar, realmente creo que una rápida mirada a la inteligencia le dirá el resto (solo escriba esto en Visual Studio y agregue ts. )

EDIT para el conteo de meses reales: (y2 - y1) * 12 + m2 - m1 , ¿cuál es el problema?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top