PluginProbe ʕ •ᴥ•ʔ
Daily Prayer Time / 2021.09.24
Daily Prayer Time v2021.09.24
2026.05.20 2026.05.11 2026.05.09 2026.05.05 2026.05.04 2026.05.03 2026.04.28 2026.04.28.1 trunk 2019.10.16 2019.11.19 2019.2.16 2019.3.1 2019.4.1 2019.4.5 2019.5.12 2019.5.13 2019.5.14 2019.5.19 2019.5.19.1 2019.5.21 2019.5.30 2019.5.5 2019.5.6 2019.5.7 2019.5.8 2019.5.9 2019.6.10 2019.6.2 2019.6.22 2019.7.10 2019.7.25 2019.8.1 2019.8.4 2019.9.16 2020.04.25 2020.04.26 2020.05.01 2020.05.04 2020.05.08 2020.05.17 2020.07.03 2021.01.10 2021.03.28 2021.07.20 2021.07.23 2021.07.24 2021.07.28 2021.08.01 2021.08.06 2021.08.07 2021.08.10 2021.09.12 2021.09.18 2021.09.23 2021.09.24 2021.10.01 2021.10.02 2021.10.10 2021.10.11 2021.10.15 2021.10.21 2021.10.27 2021.10.29 2022.03.24 2022.04.04 2022.04.14 2022.04.15 2022.04.21 2022.04.22 2022.05.04 2022.09.19 2022.11.14 2022.11.16 2022.12.18 2022.12.20 2023.01.27 2023.02.04 2023.02.09 2023.02.21 2023.03.08 2023.03.17 2023.03.18 2023.03.20 2023.05.04 2023.08.03 2023.08.08.16 2023.08.19 2023.08.19.1 2023.10.13 2023.10.21 2023.11.26 2023.12.28 2023.12.31 2024.03.28 2024.03.29 2024.03.30 2024.04.18 2024.04.20 2024.04.22 2024.04.26 2024.08.26 2024.09.12 2024.09.14 2024.09.17 2024.12.29 2024.12.30 2025.01.02 2025.01.17 2025.02.02 2025.03.04 2025.03.06 2025.03.08 2025.03.15 2025.03.20 2025.03.26 2025.03.27 2025.04.03 2025.06.16 2025.06.29 2025.07.15 2025.08.09 2025.10.26 2026.04.26
daily-prayer-time-for-mosques / Models / HijriDate.php
daily-prayer-time-for-mosques / Models Last commit date
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