Introducción a C#
Por Nacho Cabanes, versión 0.93 de 16-abr-2010


(Nota: Estás viendo una versión del curso antigua, creada en 2009. Es recomendable que sigas la versión 2015, mucho más actualizada, con contenidos más detallados, más ejemplos y más ejercicios propuestos)

10.5. Fecha y hora. Temporización

Desde C#, tenemos la posibilidad de manejar fechas y horas con facilidad. Para ello, tenemos el tipo de datos DateTime. Por ejemplo, podemos hallar la fecha (y hora) actual con:

DateTime fecha = DateTime.Now;

Dentro de ese tipo de datos DateTime, tenemos las herramientas para saber el día (Day), el mes (Month) o el año (Year) de una fecha, entre otros. También podemos calcular otras fechas sumando a la actual una cierta cantidad de segundos (AddSeconds), días (AddDays), etc. Un ejemplo básico de su uso sería:

/*---------------------------*/
/*  Ejemplo en C#            */
/*  fechas.cs                */
/*                           */
/*  Ejemplo básico de        */
/*     manejo de fechas      */
/*                           */
/*  Introduccion a C#,       */
/*    Nacho Cabanes          */
/*---------------------------*/
 
using System;
 
class ejemploFecha 
{
 
  public static void Main() 
  {
    DateTime fecha = DateTime.Now;
    Console.WriteLine("Hoy es {0} del mes {1} de {2}",
      fecha.Day, fecha.Month, fecha.Year);
    DateTime manyana = fecha.AddDays(1);
    Console.WriteLine("Mañana será {0}",
      manyana.Day);
  }
 
}
 

Algunas de las propiedades más útiles son: Now (fecha y hora actual de este equipo), Today (fecha actual); Day (día del mes), Month (número de mes), Year (año); Hour (hora), Minute (minutos), Second (segundos), Millisecond (milisegundos); DayOfWeek (día de la semana: su nombre en inglés); DayOfYear (día del año).

Y para calcular nuevas fechas, podemos usar métodos que generan un nuevo objeto DateTime, como: AddDays , AddHours, AddMilliseconds, AddMinutes, AddMonths, AddSeconds, Adhieras, o bien un Add más genérico y un Substract también genérico.

 

También podemos hacer una pausa en la ejecución: Si necesitamos que nuestro programa se detenga una cierta cantidad de tiempo, no hace falta que usemos un "while" que compruebe la hora continuamente, sino que podemos "bloquear" (Sleep) el subproceso (o hilo, "Thread") que representa nuestro programa una cierta cantidad de milésimas de segundo con: Thread.Sleep(5000);

Este método pertenece a System.Threading, que deberíamos incluir en nuestro apartado "using", o bien usar la llamada completa:

System.Threading.Thread.Sleep(100);