2011-03-03 27 views
9

Tengo dos fechas con la fecha de vencimiento el 03/03/2011 y mi fecha de regreso es el 03/09/2011. Quiero encontrar la multa en doble cuando reste la fecha de vencimiento de la fecha de regreso. ¿Cómo se puede incrementar la fecha de vencimiento?¿Cómo puedo incrementar una fecha?

+3

mydate.AddDays (1); para incrementar la fecha de vencimiento en un día ... –

+5

Por curiosidad, ¿estás usando alguna versión de Visual Studio? Si es así, parece que la ayuda contextual sería una forma más rápida de resolver sus problemas. Puede que no parezca así al principio, pero leer la ayuda es una gran parte del ciclo de mejora de un desarrollador y aprender cómo leer la ayuda es una habilidad que debe practicarse. –

Respuesta

19

siguiente código pueden ayudar:

var dueDate = new DateTime(2011, 3, 3); 

//if you want to increment six days 
var dueDatePlus6Days = dueDate.AddDays(6); 

//if you want to increment six months 
var dueDatePlus6Months = dueDate.AddMonths(6); 

var daysDiff1 = (dueDatePlus6Days - dueDate).TotalDays; //gives 6 
var daysDiff2 = (dueDatePlus6Months - dueDate).TotalDays; //gives 184 
1

Suponiendo returnDate, dueDate son objetos DateTime:

double extraDays = (returnDate - dueDate).TotalDays; 
1

de mayo Esto puede ayudarle a

DateTime dt_duedate = DateTime.Now; 
DateTime dt_returndate = DateTime.Now.AddDays(2); 
System.TimeSpan diffResult = dt_returndate.Subtract(dt_duedate); 
1

La solución lógica parecería sea ​​el método AddDays, como en las otras respuestas.

Sin embargo, intento (en general) nunca usar el punto flotante (es decir, un doble) cuando trabajo con valores monetarios o de fecha.

DateTime contiene un componente de tiempo y AddDays toma un doble como argumento (parte fraccional se convierte en tiempo), por lo que tiendo a evitar el uso de ese método.

En su lugar, utilice

dueDatePlusOne = dueDate.AddTicks(TimeSpan.TicksPerDay); 

Esto debe resultar en la ejecución ligeramente más rápido también. No es que todavía importe mucho en el hardware actual, pero comencé a codificar para microprocesadores con una velocidad de reloj de < de 1 MHz y viejos PDP-8 y -11 y cosas así en la década de 1970, y algunos hábitos nunca mueren;)

+0

Sus AddTicks() también tienen una ventaja más: Agrega 24h, mientras que AddDays() solo agrega ticks hasta la medianoche, por lo que AddTicks() mantiene el tiempo intacto, mientras que AddDays() restablece el tiempo a 00:00:00 – RaSor

+0

Acabo de probar esto porque tuve dificultades para creerlo, AddDays (1.0) agrega 24 horas también. Ventana inmediata en un proyecto de VB en Visual Studio:? (# 22/11/2016 01:02:03 #). AddDays (1.0) - resultado: # 23/11/2016 01:02:03 AM #. Lo mismo con Now.AddDays (1.0), la hora se conserva. –

Cuestiones relacionadas