c# - Calcule la diferencia entre dos fechas (cantidad de días)?


Veo que esta pregunta ha sido respondida para Java , JavaScript y PHP , pero no para C #. Entonces, ¿cómo se puede calcular el número de días entre dos fechas en C #?



Answers



Suponiendo que StartDate y EndDate son del tipo DateTime :

(EndDate - StartDate).TotalDays



Utilice el objeto TimeSpan que es el resultado de la substracción de fecha:

DateTime d1;
DateTime d2;
return (d1 - d2).TotalDays;



Creo que esto hará lo que quieras:

DateTime d1 = DateTime.Now;
DateTime d2 = DateTime.Now.AddDays(-1);

TimeSpan t = d1 - d2;
double NrOfDays = t.TotalDays;



La respuesta principal es correcta; sin embargo, si solo desea TODOS los días como int y está feliz de renunciar al componente de tiempo de la fecha, considere:

(EndDate.Date - StartDate.Date).Days

Suponiendo nuevamente que StartDate y EndDate son de tipo DateTime:




DateTime xmas = new DateTime(2009, 12, 25);
double daysUntilChristmas = xmas.Subtract(DateTime.Today).TotalDays;



En caso de que alguien quiera un número de días completos como un doble ( a , b de tipo DateTime ):

 (a.Date - b.Date).TotalDays



Puedes intentar esto

EndDate.Date.Subtract(DateTime.Now.Date).Days



// Diferencia en días, horas y minutos.

TimeSpan ts = EndDate - StartDate;

// Diferencia en días.

int differenceInDays = ts.Days; //This is in int
double differenceInDays= ts.TotalDays; //This is in double

// diferencia en horas.

int differenceInHours = ts.Hours; //This is in int
double differenceInHours= ts.TotalHours; //This is in double

// Diferencia en minutos.

int differenceInMinutes = ts.Minutes; //This is in int
double differenceInMinutes= ts.TotalMinutes; //This is in double

También puede obtener la diferencia en segundos, milisegundos y también ticks.




Para a y b como dos tipos de DateTime :

DateTime d = DateTime.Now;
DateTime c = DateTime.Now;
c = d.AddDays(145);
string cc;
Console.WriteLine(d);
Console.WriteLine(c);
var t = (c - d).Days;
Console.WriteLine(t);
cc = Console.ReadLine();



Primero declara una clase que volverá más tarde:

public void date()
{
    Datetime startdate;
    Datetime enddate;
    Timespan remaindate;

    startdate = DateTime.Parse(txtstartdate.Text).Date;
    enddate = DateTime.Parse(txtenddate.Text).Date;

    remaindate = enddate - startdate;

    if (remaindate != null)
    {
        lblmsg.Text = "you have left with " + remaindate.TotalDays + "days.";
    }
    else
    {
        lblmsg.Text = "correct your code again.";
    }
}

protected void btncal_Click(object sender, EventArgs e)
{
    date();
}

Use un control de botón para llamar a la clase anterior. Aquí hay un ejemplo:




Puedes usar el siguiente código:

 int DateDifInSecond = EndDate.Subtract(StartDate).TotalSeconds



Obtenga la diferencia entre las dos fechas y luego obtenga los días de:

int total_days = (EndDate - StartDate).TotalDays



Usar el intervalo de tiempo resolvería los problemas ya que tiene muchos atributos

DateTime strt_date = DateTime.Now;
DateTime end_date = Convert.ToDateTime("10/1/2017 23:59:59");
//DateTime add_days = end_date.AddDays(1);
TimeSpan nod = (end_date - strt_date);
Console.WriteLine(strt_date + "" + end_date + "" + "" + nod.TotalHours + "");
Console.ReadKey();



Para principiantes como yo que tropezarán con este pequeño problema, en línea simple, con la conversión de muestra a int

int totalDays = Convert.ToInt32((DateTime.UtcNow.Date - myDateTime.Date).TotalDays);

Esto calcula el total de días a partir de hoy (DateTime.UtcNow.Date) a una Fecha deseada (myDateTime.Date).

Si myDateTime es ayer o una fecha anterior a la actual, dará un resultado entero positivo (+).

Por otro lado, si myDateTime es mañana o en la fecha futura, dará un resultado entero negativo (-) debido a las reglas de suma.

Feliz codificación! ^ _ ^




protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
    DateTime d = Calendar1.SelectedDate;
    // int a;
    TextBox2.Text = d.ToShortDateString();
    string s = Convert.ToDateTime(TextBox2.Text).ToShortDateString();
    string s1 =  Convert.ToDateTime(Label7.Text).ToShortDateString();
    DateTime dt = Convert.ToDateTime(s).Date;
    DateTime dt1 = Convert.ToDateTime(s1).Date;
    if (dt <= dt1)
    {
        Response.Write("<script>alert(' Not a valid Date to extend warranty')</script>");
    }
    else
    {
        string diff = dt.Subtract(dt1).ToString();
        Response.Write(diff);
        Label18.Text = diff;
        Session["diff"] = Label18.Text;
    }
}