sql >> Database teknologi >  >> RDS >> Mysql

Konverter Excels 41014-dato til faktisk dato i PHP eller JavaScript

Taget direkte fra PHPExcel Datohåndteringskoden:

public static function ExcelToPHP($dateValue = 0) {
    if (self::$ExcelBaseDate == self::CALENDAR_WINDOWS_1900) {
        $myExcelBaseDate = 25569;
        //    Adjust for the spurious 29-Feb-1900 (Day 60)
        if ($dateValue < 60) {
            --$myExcelBaseDate;
        }
    } else {
        $myExcelBaseDate = 24107;
    }

    // Perform conversion
    if ($dateValue >= 1) {
        $utcDays = $dateValue - $myExcelBaseDate;
        $returnValue = round($utcDays * 86400);
        if (($returnValue <= PHP_INT_MAX) && ($returnValue >= -PHP_INT_MAX)) {
            $returnValue = (integer) $returnValue;
        }
    } else {
        $hours = round($dateValue * 24);
        $mins = round($dateValue * 1440) - round($hours * 60);
        $secs = round($dateValue * 86400) - round($hours * 3600) - round($mins * 60);
        $returnValue = (integer) gmmktime($hours, $mins, $secs);
    }

    // Return
    return $returnValue;
}    //    function ExcelToPHP()

Indstil self::$ExcelBaseDate ==self::CALENDAR_WINDOWS_1900 som nødvendigt for at angive den Excel-basiskalender, du bruger:Windows 1900 eller Mac 1904... sandsynligvis 1900

og hvis du ønsker et PHP DateTime-objekt i stedet:

public static function ExcelToPHPObject($dateValue = 0) {
    $dateTime = self::ExcelToPHP($dateValue);
    $days = floor($dateTime / 86400);
    $time = round((($dateTime / 86400) - $days) * 86400);
    $hours = round($time / 3600);
    $minutes = round($time / 60) - ($hours * 60);
    $seconds = round($time) - ($hours * 3600) - ($minutes * 60);

    $dateObj = date_create('1-Jan-1970+'.$days.' days');
    $dateObj->setTime($hours,$minutes,$seconds);

    return $dateObj;
}    //    function ExcelToPHPObject()


  1. Eksporter mysql-database / mysql-tabeller i json-format via kommandolinjen ELLER PHP

  2. Gør en tabel på den forkerte måde:transponere kolonner og rækker?

  3. Kan ikke tilføje felt...rækkestørrelse...større end den maksimalt tilladte størrelse

  4. mysql kan ikke indsætte, fordi ingen standardværdi?