Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
plugins
/
easy-timer
/
includes
:
mktime.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php date_default_timezone_set('UTC'); if (($mon === false) || ($day === false) || ($year === false)) { $now = getdate(); if ($mon === false) { $mon = $now['mon']; } if ($day === false) { $day = $now['mday']; } if ($year === false) { $year = $now['year']; } } $hr = (int) $hr; $min = (int) $min; $sec = (int) $sec; $mon = (int) $mon; $day = (int) $day; $year = (int) $year; $totalSec = 3600*$hr + 60*$min + $sec; $daysAdd = intdiv($totalSec, 86400); if (($totalSec < 0) && ($totalSec % 86400)) { $daysAdd--; } $secOfDay = $totalSec - 86400*$daysAdd; if ($secOfDay < 0) { $secOfDay += 86400; $daysAdd--; } $mon--; $yOff = intdiv($mon, 12); if (($mon < 0) && ($mon % 12)) { $yOff--; } $mon = $mon - 12*$yOff; $year += $yOff; $mon++; $day += $daysAdd; $isLeap = static function(int $y): bool { return (($y % 4 === 0) && (($y % 100 !== 0) || ($y % 400 === 0))); }; $monthLen = static function(int $y, int $m) use ($isLeap): int { static $len = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); return ((($m === 2) && ($isLeap($y))) ? 29 : $len[$m-1]); }; while ($day <= 0) { if (--$mon < 1) { $mon = 12; $year--; } $day += $monthLen($year, $mon); } while ($day > ($ml = $monthLen($year, $mon))) { $day -= $ml; if (++$mon > 12) { $mon = 1; $year++; } } $daysFromCivil = static function(int $y, int $m, int $d): int { $y -= (($m <= 2) ? 1 : 0); $era = intdiv($y, 400); if (($y < 0) && ($y % 400)) { $era--; } $yoe = $y - 400*$era; $mAdj = $m + (($m > 2) ? -3 : 9); $doy = intdiv(153*$mAdj + 2, 5) + $d - 1; $doe = 365*$yoe + intdiv($yoe, 4) - intdiv($yoe, 100) + $doy; return (146097*$era + $doe - 719468); }; $days = $daysFromCivil($year, $mon, $day); $tz = new DateTimeZone(date_default_timezone_get()); $dtStr = sprintf('%04d-%02d-%02d %02d:%02d:%02d', $year, $mon, $day, (int) floor($secOfDay/3600), (int) floor(($secOfDay%3600)/60), $secOfDay%60); $dt = new DateTimeImmutable($dtStr, $tz); $offset = $tz->getOffset($dt); $ts = 86400*$days + $secOfDay - $offset; if (PHP_INT_SIZE < 8) { if (($ts > PHP_INT_MAX) || ($ts < PHP_INT_MIN)) { return (float) $ts; } }