Processors
4 years ago
StartTime
4 years ago
AdminMenu.php
6 years ago
AssetsLoader.php
4 years ago
DPTAjaxHandler.php
6 years ago
DSTemplateLoader.php
4 years ago
DailyShortCode.php
6 years ago
DigitalScreen.php
4 years ago
HijriDate.php
7 years ago
Init.php
6 years ago
MonthlyShortCode.php
4 years ago
MonthlyTimeTable.php
6 years ago
Shortcodes.php
6 years ago
UpdateStyles.php
7 years ago
Validator.php
4 years ago
db.php
4 years ago
dptWidget.php
4 years ago
HijriDate.php
100 lines
| 1 | <?php |
| 2 | |
| 3 | class HijriDate |
| 4 | { |
| 5 | private $hijriMonth = array ("Muharram", "Safar", "Rabī al-Awwal", "Rabī ath-Thānī ", "Jumādā al-Ula", "Jumādā ath-Thāniya", "Rajab", "Sha'ban", "Ramadan", "Shawwal", "Dhū al-Qa'da", "Dhū al-Hijjah"); |
| 6 | |
| 7 | /** |
| 8 | * @param $day |
| 9 | * @param $month |
| 10 | * @param $year |
| 11 | * @param bool $stringDate |
| 12 | * @param bool $sunset |
| 13 | * |
| 14 | * @return array|string |
| 15 | */ |
| 16 | public function getDate($day, $month, $year, $stringDate=false, $sunset=false) |
| 17 | { |
| 18 | if ($sunset == true) { |
| 19 | $dt = new DateTime('tomorrow'); |
| 20 | $tomorrow = $dt->format('d/m/Y'); |
| 21 | $parts = explode('/', $tomorrow); |
| 22 | $day = $parts[0]; |
| 23 | $month = $parts[1]; |
| 24 | $year = $parts[2]; |
| 25 | } |
| 26 | |
| 27 | $date = $this->greg2Hijri($day, $month, $year); |
| 28 | |
| 29 | $day = $date['day']; |
| 30 | $month = $this->hijriMonth[(int) $date['month'] - 1]; |
| 31 | $year = $date['year']; |
| 32 | |
| 33 | if ($stringDate) { |
| 34 | return "{$month} {$day}, {$year}"; |
| 35 | } |
| 36 | |
| 37 | return array( |
| 38 | 'day' => $day, |
| 39 | 'month' => $month, |
| 40 | 'year' => $year |
| 41 | ); |
| 42 | } |
| 43 | |
| 44 | /** |
| 45 | * @param int $day |
| 46 | * @param int $month |
| 47 | * @param int $year |
| 48 | * |
| 49 | * @return array|string |
| 50 | */ |
| 51 | private function greg2Hijri($day, $month, $year) |
| 52 | { |
| 53 | $day = (int) $day + (int) get_option('hijri-adjust'); |
| 54 | $month = (int) $month; |
| 55 | $year = (int) $year; |
| 56 | |
| 57 | |
| 58 | if (($year > 1582) or (($year == 1582) and ($month > 10)) or (($year == 1582) and ($month == 10) and ($day > 14))) |
| 59 | { |
| 60 | $jd = $this->intPart((1461*($year+4800+$this->intPart(($month-14)/12)))/4)+$this->intPart((367*($month-2-12*($this->intPart(($month-14)/12))))/12)- |
| 61 | $this->intPart( (3* ($this->intPart( ($year+4900+ $this->intPart( ($month-14)/12) )/100) ) ) /4)+$day-32075; |
| 62 | } |
| 63 | else |
| 64 | { |
| 65 | $jd = 367*$year-$this->intPart((7*($year+5001+$this->intPart(($month-9)/7)))/4)+$this->intPart((275*$month)/9)+$day+1729777; |
| 66 | } |
| 67 | |
| 68 | |
| 69 | $l = $jd-1948440+10632; |
| 70 | $n = $this->intPart(($l-1)/10631); |
| 71 | $l = $l-10631*$n+354; |
| 72 | $j = ($this->intPart((10985-$l)/5316))*($this->intPart((50*$l)/17719))+($this->intPart($l/5670))*($this->intPart((43*$l)/15238)); |
| 73 | $l = $l-($this->intPart((30-$j)/15))*($this->intPart((17719*$j)/50))-($this->intPart($j/16))*($this->intPart((15238*$j)/43))+29; |
| 74 | |
| 75 | $month = $this->intPart((24*$l)/709); |
| 76 | $day = $l-$this->intPart((709*$month)/24); |
| 77 | $year = 30*$n+$j-30; |
| 78 | |
| 79 | return array( |
| 80 | 'day' => $day, |
| 81 | 'month' => $month, |
| 82 | 'year' => $year |
| 83 | ); |
| 84 | } |
| 85 | |
| 86 | /** |
| 87 | * @param float $float |
| 88 | * |
| 89 | * @return float |
| 90 | */ |
| 91 | private function intPart($float) |
| 92 | { |
| 93 | if ($float < -0.0000001) |
| 94 | return ceil($float - 0.0000001); |
| 95 | else |
| 96 | return floor($float + 0.0000001); |
| 97 | |
| 98 | } |
| 99 | } |
| 100 |