SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: trogua_z en Sábado 28 de Noviembre de 2009, 04:23

Título: Sumar y restar fechas en C#
Publicado por: trogua_z en Sábado 28 de Noviembre de 2009, 04:23
Disculpen amigos tal vez alguien me pueda explicar como trabajar con este tipo de codigos.

La cuestion es esta, tengo que obtener el salario bruto de un empleado temporal, para sacar dicho salario es necesario escribir la fecha en que ingreso a la empresa y la fecha en que salio, luego debo investigar cuantas semanas trabajo el empleado en ese lapso de tiempo. Estoy creando esta aplicacion en window form por lo que e puesto 2 Masket text box con mask de fecha (que creo que me fasilita un poco las cosas).
 Ahora la trama esta en ¿como puedo yo restar la fecha de salida a la fecha de entrada?  :brickwall:
Se que tiene que ver con un codigo llamado Data Timer pero ya le intente acomodar y nada.
Título: Re: Sumar y restar fechas en C#
Publicado por: ProfesorX en Sábado 28 de Noviembre de 2009, 22:40
Cita de: "trogua_z"
Se que tiene que ver con un codigo llamado Data Timer pero ya le intente acomodar y nada.

Creo que no lo lograras, porque no se hace con Data Timer, sino con la clase DateTime

A continuacion un pequeño ejemplo que obtiene los dias transcurridos entre dos fechas que tienen un año de diferencia, o sea que da como resultado 365.

Código: C#
  1.  
  2. using System;
  3.  
  4. namespace ConsoleApplication1
  5. {
  6.     class Program
  7.     {
  8.         static DateTime fecha1 = new DateTime(2000, 12, 1);
  9.         static DateTime fecha2 = new DateTime(2001, 12, 1);
  10.         static TimeSpan tiempoTranscurrido;
  11.         static void Main(string[] args)
  12.         {
  13.             tiempoTranscurrido = fecha2.Subtract(fecha1);
  14.             Console.WriteLine(tiempoTranscurrido.Days);
  15.  
  16.         }
  17.     }
  18. }
  19.  
  20.  
Saludos :)
Título: Re: Sumar y restar fechas en C#
Publicado por: trogua_z en Sábado 28 de Noviembre de 2009, 23:03
Upss si tenes razon esq lo escribi mal, pero dime es posible que el usuario pueda elegir la fecha,
es decir puedo poner 2 variables, una que capture la primer fecha y otra que calcule la otra fecha, en ese caso es posible escribir:

Código: C#
  1.  
  2. static DateTime fecha1 = new DateTime(variable1);
  3. static DateTime fecha2 = new DateTime(variable2);
  4.  
  5.  

¿Mmm que me dices?
Título: Re: Sumar y restar fechas en C#
Publicado por: ProfesorX en Domingo 29 de Noviembre de 2009, 00:20
Es posible, pero no directamente como lo estas haciendo, si te fijas, la funcion DateTime recibe parametros de tipo entero, asi que hay que extraer los valores y convertirlos a tipo entero.

Te pongo un ejemplo, suponiendo que la fecha la tienes en una variable con el formato dd/mm/aaaa
Código: C#
  1.  
  2. // Formato de la cadena dd/mm/aaaa
  3. fechaCad = "28/11/2009";
  4. fecha = new DateTime(Convert.ToInt32(fechaCad.Substring(6, 4)),
  5.     Convert.ToInt32(fechaCad.Substring(3, 2)),
  6.     Convert.ToInt32(fechaCad.Substring(0, 2)));
  7.  
  8.  

Ese trozo de codigo es el que utilizo para compara mis cadenas que he leido de un textbox ;)

Si utilizas un formato de fecha diferente, por ejemplo aaaa/mm/dd, deberas modificar los parametros que le pasas a Substring()

Saludos :)
Título: Re: Sumar y restar fechas en C#
Publicado por: trogua_z en Domingo 29 de Noviembre de 2009, 00:35
Ok compañero gracias por la información, lo intentare como tu dices. :beer:
Título: Re: Sumar y restar fechas en C#
Publicado por: trogua_z en Domingo 29 de Noviembre de 2009, 05:01
Hay compañeo sigo molestando

me podrias decir para que son los numeros que escribiste en el Substring:
Código: C#
  1. # Convert.ToInt32(fechaCad.Substring(3, 2)),
  2. #     Convert.ToInt32(fechaCad.Substring(0, 2)));
  3.  
:ouch:

El 3,2 y el 0,2 son una especie de codigo o que?
Título: Re: Sumar y restar fechas en C#
Publicado por: ProfesorX en Domingo 29 de Noviembre de 2009, 06:25
Lo podias haber buscado en la ayuda del C# pero bueno :P

El primer parametro indica a partir de que caracter vas a leer (o sea el indice de la cadena), teniendo en cuenta que las cadenas en C# comienzan en cero.
El segundo parametro indica cuantos caracteres vas a tomar.

Entonces:
fechaCad.Substring(0, 2) indica que a partir de la posicion cero, tomes 2 caracteres, o sea, los dos numeros del dia.

fechaCad.Substring(3, 2) indica que a partir de la posicion 3 de la cadena, vas a tomar 2 caracteres, o sea, los dos caracteres del mes, pero saltandote los 3 primeros caracteres, que serian "dd/".

fechaCad.Substring(6, 4) indica que a partir de la posicion 6 de la cadena vas a tomar 4 caracteres, o sea los 4 caracteres del año pero saltandote los 6 primeros caracteres, que serian "dd/mm/".

eespero que con eso te quede acalrado
Título: Re: Sumar y restar fechas en C#
Publicado por: trogua_z en Domingo 29 de Noviembre de 2009, 06:36
Mmm ya conrrason, jeje disculpa esque soy un poco nuevo en C# y nunca e trabajado con esto que son las cadenas. Con que cadenas... interesante lo investigare más a fondo en la ayuda de C# esto me podria servir para programas futuros.

Muchas gracias Compañero Pura vida, y gracias por tomar un poco de tu tiempo para ayudarme. :good:
Título: Re: Sumar y restar fechas en C#
Publicado por: ProfesorX en Domingo 29 de Noviembre de 2009, 06:50
Si, de hecho el manejo de cadenas (string) es basico en C#, los textbox/maskedtexbox guardan todo en la propiedad Text, que en realidad es una cadena (string).

Entonces el procedimiento normal es leer todo en cadenas, y dependiendo del tipo de informacion de la cadena, hay que convertirlo al tipo que necesites. Si en un textbox lees un double, conviertes el texto en double, si lees un int, lo conviertes en int, si lees una cadena... bueno, las cadenas no hay que convertirlas a cadena  :rolleyes: , pero por ejemplo, supongamos que lees un nombre con apellidos, en un solo textbox, podrias usar el metodo Substring() en combinacion con otros metodos de string para separar los nombres, ya que cada nombre se separa con espacios.

En fin, hay muchos metodos interesantes en la clase string, es bueno que le des una leida para que sepas que puedes hacer con las cadenas.

Saludos :)
Título: Re: Sumar y restar fechas en C#
Publicado por: skarlita_19 en Jueves 10 de Diciembre de 2009, 01:27
public void DiferenciaFechas()
        {

                int cuantosDiasPrestado;
                TimeSpan diferencia;
                diferencia = MonthDevolucion.Value.Date - MonthPrestamo.Value.Date;
                //diferencia = MonthDevolucion.Value.Date - MonthPrestamo.Value.Date;
                cuantosDiasPrestado = diferencia.Days;
                this.txtDias.Text = Convert.ToString(cuantosDiasPrestado);
        }
Al darle doble click en el MonthDevolucion:

private void MonthDevolucion_ValueChanged(object sender, EventArgs e)
        {
            DiferenciaFechas();
        }

y ya el resultado me lo pone en el textbox txtDias. =D
Título: Re: Sumar y restar fechas en C#
Publicado por: trogua_z en Jueves 10 de Diciembre de 2009, 05:24
:good: Pura Vida Skarlita_19, gracias por compartir este codigo conmigo, te lo agradesco aunque el proyecto ya haya pasado, ademas quien quita que me pueda llegar otro proyecto paresido algun día.

Esta exelente tu codigo.
Título: Re: Sumar y restar fechas en C#
Publicado por: skarlita_19 en Viernes 11 de Diciembre de 2009, 07:23
de nada trogua,, creeme que yo también estoy batallando con un codigo ahora, pondré mi duda aquí jeje por si te das chance de contestarme jeje =) nos vemos