Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Konwertuj datę 41014 Excela na rzeczywistą datę w PHP lub JavaScript

Pobrane bezpośrednio z kodu obsługi daty PHPExcel:

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()

Ustaw self::$ExcelBaseDate ==self::CALENDAR_WINDOWS_1900 w razie potrzeby, aby wskazać kalendarz bazowy programu Excel, którego używasz:Windows 1900 lub Mac 1904... najprawdopodobniej 1900

a jeśli chcesz zamiast tego obiektu PHP DateTime:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kolejność wyników Laravela według kolumny w tabeli polimorficznej

  2. Znajdowanie NAJMNIEJSZYCH/NAJWIĘKSZYCH wartości z połączonych KOLUMN, zignoruj ​​0 i NULL- MYSQL

  3. Procedury składowane MySql:Jak wybrać z tabeli procedur?

  4. MySQL SELECT najczęściej według grupy

  5. Jakiego protokołu komunikacyjnego używa MySQL?