«

»

Sep 07

Convertion d’une date Excel en unix timestamp

excel-phpExcel conserve interne les dates en comptant le nombre de jours passés depuis le premier (1) janvier 1900.

En développement, on utilise plus le timestamp ou encore UNIX timestamp qui lui est définit comme le nombre de secondes écroulé depuis le premier (1) Janvier 1970 UTC (Universal Time Coordinated).

Par exemple le 19 Juin 2011 sera représenté en Excel sous la forme 40713.

Une petite formule pour convertir les dates Excel en Unix timestamp serait :
unixTimestamp =  (ExcelDate – 25569) * 86400

où 25569 est le nombre de jours écroulés entre le 1 Janvier 1900 et le 1 Janvier 1970 UTC, et 86400 est le nombre de seconde que comprend une journée.

Le code JAVA qui permettra de faire automatiquement cette conversion serait :

public class ExcelToUnixTimestamp
{

  private static int _SEC_IN_DAY = 86400;
  private static int _DAY_DIFF = 25569;

  public static long ExcelToUnix(double date)
  {
    if(date <= _DAY_DIFF)
      return 0;

    return (long) ((date - _DAY_DIFF) * _SEC_IN_DAY);
  }

 public static double UnixToExcel(long timestamp)
  {
    return (timestamp / _SEC_IN_DAY) + _DAY_DIFF;
  }

}