/** * Set the Default Timezone used for date/time conversions * * @param string $timezone Time zone (e.g. 'Europe/London') * * @return boolean Success or failure */ public static function setTimeZone($timezone) { if (self::_validateTimezone($timezone)) { self::$_timezone = $timezone; return true; } return false; }
/** * Set the Default Timezone used for date/time conversions * * @param string $timezone Time zone (e.g. 'Europe/London') * @return boolean Success or failure */ public static function setTimeZone($timezone) { if (self::_validateTimezone($timezone)) { self::$_timezone = $timezone; return TRUE; } return FALSE; }
/** * Convert a date from Excel to PHP * * @param long $dateValue Excel date/time value * @param boolean $adjustToTimezone Flag indicating whether $dateValue should be treated as * a UST timestamp, or adjusted to UST * @param string $timezone The timezone for finding the adjustment from UST * @return long PHP serialized date/time */ public static function ExcelToPHP($dateValue = 0, $adjustToTimezone = FALSE, $timezone = NULL) { if (self::$_excelBaseDate == self::CALENDAR_WINDOWS_1900) { $my_excelBaseDate = 25569; // Adjust for the spurious 29-Feb-1900 (Day 60) if ($dateValue < 60) { --$my_excelBaseDate; } } else { $my_excelBaseDate = 24107; } // Perform conversion if ($dateValue >= 1) { $utcDays = $dateValue - $my_excelBaseDate; $returnValue = round($utcDays * 86400); if ($returnValue <= PHP_INT_MAX && $returnValue >= -PHP_INT_MAX) { $returnValue = (int) $returnValue; } } else { $hours = round($dateValue * 24); $mins = round($dateValue * 1440) - round($hours * 60); $secs = round($dateValue * 86400) - round($hours * 3600) - round($mins * 60); $returnValue = (int) gmmktime($hours, $mins, $secs); } $timezoneAdjustment = $adjustToTimezone ? PHPExcel_Shared_TimeZone::getTimezoneAdjustment($timezone, $returnValue) : 0; // Return return $returnValue + $timezoneAdjustment; }
/** * Convert a date from PHP to Excel * * @param mixed $dateValue PHP serialized date/time or date object * @param boolean $adjustToTimezone Flag indicating whether $dateValue should be treated as * a UST timestamp, or adjusted to UST * @param string $timezone The timezone for finding the adjustment from UST * @return mixed Excel date/time value * or boolean FALSE on failure */ public static function PHPToExcel($dateValue = 0, $adjustToTimezone = false, $timezone = null) { $saveTimeZone = date_default_timezone_get(); date_default_timezone_set('UTC'); $timezoneAdjustment = $adjustToTimezone ? PHPExcel_Shared_TimeZone::getTimezoneAdjustment($timezone ? $timezone : $saveTimeZone, $dateValue) : 0; $retValue = false; if (is_object($dateValue) && $dateValue instanceof \DateTime) { $dateValue->add(new \DateInterval('PT' . $timezoneAdjustment . 'S')); $retValue = self::formattedPHPToExcel($dateValue->format('Y'), $dateValue->format('m'), $dateValue->format('d'), $dateValue->format('H'), $dateValue->format('i'), $dateValue->format('s')); } elseif (is_numeric($dateValue)) { $dateValue += $timezoneAdjustment; $retValue = self::formattedPHPToExcel(date('Y', $dateValue), date('m', $dateValue), date('d', $dateValue), date('H', $dateValue), date('i', $dateValue), date('s', $dateValue)); } elseif (is_string($dateValue)) { $retValue = self::stringToExcel($dateValue); } date_default_timezone_set($saveTimeZone); return $retValue; }