UnknownSec Bypass
403
:
/
mnt
/
lmsestudio-instance-vol002
/
lms_a0b9623cd445
/
app
/
Helpers
/ [
drwxr-xr-x
]
Menu
Upload
Mass depes
Mass delete
Terminal
Info server
About
name :
DateUtils.php
<?php namespace EstudioLMS\Helpers; use Carbon\Carbon; use DateTime; use DateInterval; use Exception; /** * */ class DateUtils { /** * @param $timestamp * @return mixed|string */ public function weekDay($timestamp) { $timestamp = strtotime($timestamp); $date = getdate($timestamp); $weekDay = $date['weekday']; if (preg_match('/(sunday|domingo)/mi', $weekDay)) $weekDay = 'Domingo'; else if (preg_match('/(monday|segunda)/mi', $weekDay)) $weekDay = 'Segunda'; else if (preg_match('/(tuesday|terça)/mi', $weekDay)) $weekDay = 'Terça'; else if (preg_match('/(wednesday|quarta)/mi', $weekDay)) $weekDay = 'Quarta'; else if (preg_match('/(thursday|quinta)/mi', $weekDay)) $weekDay = 'Quinta'; else if (preg_match('/(friday|sexta)/mi', $weekDay)) $weekDay = 'Sexta'; else if (preg_match('/(saturday|sábado)/mi', $weekDay)) $weekDay = 'Sábado'; return $weekDay; } /** * @param $date * @param int $plusDays * @return false|string */ public function dueDate($date, int $plusDays = 0) { $date = date('Y-m-d', strtotime($date . '+ ' . $plusDays . ' days')); if ($this->weekDay($date) == ("Sábado")) { $date = date('Y-m-d', strtotime($date . ' + 2 days')); } else if ($this->weekDay($date) == ("Domingo")) { $date = date('Y-m-d', strtotime($date . '+ 1 days')); } return $date; } /** * @param $date * @param int $plusDays * @return Carbon */ public function businessDay($date, int $plusDays = 0): Carbon { $holidays = $this->holidays(date('Y', strtotime($date))); $businessDay = false; while (!$businessDay) { $date = $this->dueDate($date, $plusDays); if ($this->arrayValueRecursive($date, $holidays) <> NULL) { $date = date('Y-m-d', strtotime($date . '+ 1 days')); $date = $this->dueDate($date, $plusDays); } else { $businessDay = true; } } return Carbon::parse($date); } /** * @param $date * @return bool */ public function isBusinessDay($date): bool { $holidays = $this->holidays(date('Y', strtotime($date))); if ($this->arrayValueRecursive($date, $holidays) <> null) { return false; } else { return $this->dueDate($date) == $date; } } /** * @param $year * @return false|string */ public function easterDate($year) { $rest = ($year % 19) + 1; switch ($rest) { case 1: $day = mktime(0, 0, 0, 4, 14, $year); break; case 2: $day = mktime(0, 0, 0, 4, 3, $year); break; case 3: $day = mktime(0, 0, 0, 3, 23, $year); break; case 4: $day = mktime(0, 0, 0, 4, 11, $year); break; case 5: $day = mktime(0, 0, 0, 3, 31, $year); break; case 6: $day = mktime(0, 0, 0, 4, 18, $year); break; case 7: $day = mktime(0, 0, 0, 4, 8, $year); break; case 8: $day = mktime(0, 0, 0, 3, 28, $year); break; case 9: $day = mktime(0, 0, 0, 4, 16, $year); break; case 10: $day = mktime(0, 0, 0, 4, 5, $year); break; case 11: $day = mktime(0, 0, 0, 3, 25, $year); break; case 12: $day = mktime(0, 0, 0, 4, 13, $year); break; case 13: $day = mktime(0, 0, 0, 4, 2, $year); break; case 14: $day = mktime(0, 0, 0, 3, 22, $year); break; case 15: $day = mktime(0, 0, 0, 4, 10, $year); break; case 16: $day = mktime(0, 0, 0, 3, 30, $year); break; case 17: $day = mktime(0, 0, 0, 4, 17, $year); break; case 18: $day = mktime(0, 0, 0, 4, 7, $year); break; case 19: $day = mktime(0, 0, 0, 3, 27, $year); break; } $ret = ""; for ($n = 1; $n <= 13; $n++) { $day += 86400; if (date('l', $day) == "Sunday") { $dd = date('d', $day); $mm = date('m', $day); return date('Y-m-d', $day); } } return ""; } /** * @param $year * @return array */ public function holidays($year): array { $holidays[$year . '-01-01'] = 'Confraternização Universal'; $holidays[$year . '-04-21'] = 'Tiradentes'; $holidays[$year . '-05-01'] = 'Dia do Trabalho'; $holidays[$year . '-09-07'] = 'Proclamação da Independência'; $holidays[$year . '-10-12'] = 'Nossa Srª Aparecida'; $holidays[$year . '-11-02'] = 'Finados'; $holidays[$year . '-11-15'] = 'Proclamação da República'; $holidays[$year . '-12-25'] = 'Natal'; $easter = $this->easterDate($year); $holidays[date('Y-m-d', strtotime($easter . ' - 48 days'))] = 'Segunda de Carnaval'; $holidays[date('Y-m-d', strtotime($easter . ' - 47 days'))] = 'Terça de Carnaval'; $holidays[date('Y-m-d', strtotime($easter . ' - 2 days'))] = 'Sexta-Feira da Paixão'; $holidays[$easter] = 'Páscoa'; $holidays[date('Y-m-d', strtotime($easter . ' + 60 days'))] = 'Corpus Christi'; return $holidays; } /** * @param $key * @param array $arr * @return array|mixed|null */ public function arrayValueRecursive($key, array $arr) { $val = array(); array_walk_recursive($arr, function ($v, $k) use ($key, &$val) { if ($k == $key) array_push($val, $v); }); return count($val) > 1 ? $val : array_pop($val); } /** * @throws Exception */ public function countBusinessDays($di, $df): int { $businessDays = 0; $dc = $di; while ($df > $dc) { if ($dc == $this->businessDay($dc)) $businessDays++; $do = new DateTime($dc); $do->add(new DateInterval("P1D")); $dc = $do->format("Y-m-d"); } return $businessDays; } /** * @throws Exception */ public function calcBusinessDayDate($initialDate, $businessDays) { $currentDate = $initialDate; $i = 0; while ($i <= $businessDays) { if ($currentDate == $this->businessDay($currentDate)) $i++; $objectDate = new DateTime($currentDate); $objectDate->add(new DateInterval("P1D")); $currentDate = $i <= $businessDays ? $objectDate->format("Y-m-d") : $currentDate; } return $currentDate; } }
Copyright © 2026 - UnknownSec