Convertir Fecha Serial de Excel a DateTime C#

En Excel los valores de fecha y hora se guardan como un número que representa
el número de días desde 1900-Ene-01, más el componente fraccional que representa
la fracción de 24 horas del día (ddddd.ttttt). Esto es conocido como fecha
serial.

La porción entera del número, que representa la fecha como el número de días
que han transcurrido desde 1900-Ene-01. En este caso el número 1 representaría el
1-Ene-1900. Cabe notar que el cero no representa el 31-Dic-1899. En Excel existe
un error ya que en su comportamiento cree que existe 29-Feb-1900, siendo que
1900 no es año bisiesto, así que todas las fechas posteriores a esta de hecho
tienen un día de más.

A continuación expongo una pequeña función para convertir la fecha serial de
excel a un objeto DateTime de .Net en C#.  Como se observa en en la cuarta línea
se restan 2 días por que excel comienza su cuenta en cero y uno más para
corregir el error de consideración del año bisiesto 1900.

public static DateTime ExcelSerialDateToDateTime(int nFechaExcel)

{
if (nFechaExcel == 0) return new DateTime(1900, 1,
1);
if (nFechaExcel == 60) return new DateTime(1900, 3,
1);
if (nFechaExcel < 60) nFechaExcel++;

nFechaExcel = nFechaExcel – 2;

DateTime oFechaOrigen = new DateTime(1900, 1, 1);

return oFechaOrigen.AddDays(nFechaExcel);
}

Saludos

Un comentario en “Convertir Fecha Serial de Excel a DateTime C#

  1. Hola!!! Muy buena la función que pusiste aqui, esta sencilla de entender y creeme que batalle hasta para encontrar el nombre del formato que tienen las fechas en excel, por llamarle de alguna forma. Gracias

    Me gusta

Los comentarios están cerrados.