All guides
No guide matches your search.
أوقات الصلاة
احسب الفجر والشروق والظهر والعصر والمغرب والعشاء لأي موقع بست طرق حساب، مع قواعد لخطوط العرض العالية وضبط يدوي للدقائق، وبيان ما قورن بجداول منشورة.
On this page
نظرة عامة
يحسب RtlyKit\Prayer\PrayerTimes الأوقات الستة اليومية من معادلات فلكية، دون اتصال بالشبكة ودون ملف بيانات. ميل الشمس ومعادلة الزمن مأخوذان من المتسلسلة منخفضة الدقة في كتاب Jean Meeus Astronomical Algorithms (وهي المعادلات نفسها في حاسبة NOAA الشمسية). وتأتي الزاوية الساعية من حساب المثلثات الكروية، والعصر من معامل طول الظل، والشروق والغروب من ارتفاع قدره -0.833 درجة (الانكسار الجوي مع نصف قطر الشمس). أما زوايا الفجر والمغرب والعشاء فهي الاصطلاحات المنشورة لكل طريقة.
النتائج نصوص بصيغة HH:MM بالتوقيت المحلي للمنطقة الزمنية الخاصة بالحاسبة، مقرَّبة إلى أقرب دقيقة.
بداية سريعة
use RtlyKit\Prayer\PrayerTimes;
$tz = new DateTimeZone('Asia/Tehran');
$day = new DateTimeImmutable('2026-03-21 12:00', $tz);
$times = PrayerTimes::forCity('tehran')->getTimes($day);
echo json_encode($times);
// {"fajr":"04:43","sunrise":"06:07","dhuhr":"12:12","asr":"15:39","maghrib":"18:35","isha":"19:22"}إذا حذفت التاريخ، تستخدم getTimes() تاريخ اليوم بحسب المنطقة الزمنية للحاسبة. والتاريخ الذي تمرّره يحدد اليوم التقويمي المحلي لتلك المنطقة. وهناك أيضًا اختصار ضمن فضاء الأسماء يُرجع المصفوفة نفسها لليوم الحالي: \RtlyKit\prayer_times('tehran', 'Tehran') (انظر الدوال المساعدة والدوال العامة).
إنشاء حاسبة
هناك طريقتان لبنائها.
// 1) مدينة مضمَّنة: تُملأ الإحداثيات والمنطقة الزمنية.
$p = PrayerTimes::forCity('mecca', PrayerTimes::METHOD_MAKKAH);
// 2) إحداثياتك الخاصة.
$p = new PrayerTimes(
latitude: 35.6892,
longitude: 51.3890,
method: PrayerTimes::METHOD_TEHRAN, // default
asrFactor: PrayerTimes::ASR_STANDARD, // default
timezone: new DateTimeZone('Asia/Tehran'), // default: date_default_timezone_get()
elevation: 0.0, // metres, default 0
);يفحص المُنشئ الأعداد: خط العرض من -90 إلى 90، وخط الطول من -180 إلى 180، والارتفاع من -20000 إلى 20000 متر. وNaN واللانهاية والقيم خارج هذه النطاقات تُطلق InvalidPrayerConfigException.
تعرف forCity() هذه الأسماء (دون حساسية لحالة الأحرف): tehran وmashhad وisfahan وshiraz وtabriz وqom وmecca وmedina وriyadh وistanbul وcairo وdubai وbaghdad وjakarta. وأي اسم آخر يُثير استثناءً؛ للمدن الأخرى استخدم المُنشئ مع إحداثياتك.
الطرق والزوايا
تحدد الطريقة زاوية انخفاض الشمس للفجر والعشاء (وللمغرب أيضًا في طريقة طهران). استخدم ثوابت الصنف بدلًا من النصوص.
| الثابت | الفجر | المغرب | العشاء |
|---|---|---|---|
METHOD_TEHRAN (Tehran، الافتراضي) | 17.7 درجة | الشمس على بعد 4.5 درجة تحت الأفق | 14 درجة |
METHOD_MWL (MWL) | 18 درجة | الغروب | 17 درجة |
METHOD_ISNA (ISNA) | 15 درجة | الغروب | 15 درجة |
METHOD_EGYPT (Egypt) | 19.5 درجة | الغروب | 17.5 درجة |
METHOD_MAKKAH (Makkah) | 18.5 درجة | الغروب | المغرب + 90 دقيقة (+120 دقيقة في رمضان) |
METHOD_KARACHI (Karachi) | 18 درجة | الغروب | 18 درجة |
اليوم نفسه في طهران محسوبًا بكل طريقة (الفجر والمغرب والعشاء فقط تختلف؛ أما الشروق والظهر والعصر فلا تعتمد على الطريقة):
foreach (['Tehran', 'MWL', 'ISNA', 'Egypt', 'Makkah', 'Karachi'] as $m) {
echo str_pad($m, 8), json_encode(PrayerTimes::forCity('tehran', $m)->getTimes($day)), "\n";
}
// Tehran {"fajr":"04:43","sunrise":"06:07","dhuhr":"12:12","asr":"15:39","maghrib":"18:35","isha":"19:22"}
// MWL {"fajr":"04:42","sunrise":"06:07","dhuhr":"12:12","asr":"15:39","maghrib":"18:17","isha":"19:37"}
// ISNA {"fajr":"04:57","sunrise":"06:07","dhuhr":"12:12","asr":"15:39","maghrib":"18:17","isha":"19:27"}
// Egypt {"fajr":"04:34","sunrise":"06:07","dhuhr":"12:12","asr":"15:39","maghrib":"18:17","isha":"19:40"}
// Makkah {"fajr":"04:39","sunrise":"06:07","dhuhr":"12:12","asr":"15:39","maghrib":"18:17","isha":"19:47"}
// Karachi {"fajr":"04:42","sunrise":"06:07","dhuhr":"12:12","asr":"15:39","maghrib":"18:17","isha":"19:42"}الظهر هو منتصف النهار الشمسي (عبور الشمس للزوال)، ولا يُضاف أي هامش احتياط إلى أي وقت. وإذا كانت جهتك تضيف هامشًا فاستخدم withTune() أدناه.
مذاهب العصر
يبدأ العصر حين يساوي ظلّ الجسم ظلّه وقت الزوال مضافًا إليه مضاعف لارتفاعه. يُستخدم ASR_STANDARD (القيمة 1، أي مثل الارتفاع) عند المذاهب الشافعي والمالكي والحنبلي والجعفري؛ أما ASR_HANAFI (القيمة 2، أي مثلا الارتفاع) فيعطي وقتًا أكثر تأخرًا.
$hanafi = PrayerTimes::forCity('tehran', 'Tehran', PrayerTimes::ASR_HANAFI);
echo $hanafi->getTimes($day)['asr']; // 16:32 (standard: 15:39)مكة: العشاء في رمضان
يحدد اصطلاح أم القرى العشاء بعد المغرب بـ 90 دقيقة، وبـ 120 دقيقة في رمضان. تختار الحاسبة 120 حين يقع التاريخ المدني المحلي في رمضان بحسب جدول أم القرى الهجري الخاص بالحزمة (الشهر 9)، وتختار 90 فيما عدا ذلك. والقرار يتبع التاريخ المدني، لا اليوم الإسلامي الذي يبدأ من الغروب.
$mk = PrayerTimes::forCity('mecca', 'Makkah');
foreach (['2026-02-20', '2026-03-01', '2026-03-21'] as $s) {
$t = $mk->getTimes(new DateTimeImmutable($s, new DateTimeZone('Asia/Riyadh')));
echo $s, ' maghrib ', $t['maghrib'], ' isha ', $t['isha'], "\n";
}
// 2026-02-20 maghrib 18:21 isha 20:21 (+120, Ramadan)
// 2026-03-01 maghrib 18:25 isha 20:25 (+120, Ramadan)
// 2026-03-21 maghrib 18:32 isha 20:02 (+90, after Ramadan)الارتفاع عن سطح البحر
الوسيط elevation هو ارتفاع الراصد بالأمتار. يخفض ارتفاع الشروق والغروب بالانخفاض الهندسي للأفق 0.0347 * sqrt(h) درجة، فيصبح الشروق أبكر والغروب أكثر تأخرًا على الجبل. القيم السالبة تُعامل على أنها 0 (والنطاق المقبول من -20000 إلى 20000). ويؤثر في الشروق والغروب والأوقات المشتقة من الغروب فقط.
$a = new PrayerTimes(35.6892, 51.3890, 'Tehran', 1, $tz);
$b = new PrayerTimes(35.6892, 51.3890, 'Tehran', 1, $tz, 1500.0);
$d = new DateTimeImmutable('2026-06-21', $tz);
echo $a->getTimes($d)['sunrise'], "\n"; // 04:49
echo $b->getTimes($d)['sunrise'], "\n"; // 04:41في طريقة طهران يتحدد المغرب بزاوية 4.5 درجة وليس بالغروب، فلا يتغير مع الارتفاع (19:45 في الحالتين أعلاه).
المناطق الزمنية والتوقيت الصيفي
يُحوَّل كل وقت باستخدام فرق التوقيت الفعلي عن UTC للمنطقة في تلك اللحظة، فيُعالَج تغيير التوقيت الصيفي في منتصف العام دون أي عمل إضافي. تتغير برلين في 2026-03-29:
$tzb = new DateTimeZone('Europe/Berlin');
$ber = new PrayerTimes(52.52, 13.405, 'MWL', 1, $tzb);
foreach (['2026-03-28', '2026-03-29'] as $s) {
echo $s, ' ', json_encode($ber->getTimes(new DateTimeImmutable($s, $tzb))), "\n";
}
// 2026-03-28 {"fajr":"03:51","sunrise":"05:50","dhuhr":"12:11","asr":"15:39","maghrib":"18:34","isha":"20:26"}
// 2026-03-29 {"fajr":"04:48","sunrise":"06:48","dhuhr":"13:11","asr":"16:40","maghrib":"19:35","isha":"21:28"}قد تبعد المنطقة الزمنية كثيرًا عن خط طولها، مثل Pacific/Kiritimati (UTC+14 عند خط الطول 157 غربًا). ومع ذلك تُرجع الحاسبة أوقات اليوم الذي تطلبه: فالأوقات الستة كلها تقع في ذلك التاريخ المحلي. ولذلك يكون الظهر في كيريتيماتي نحو 12:29 لا نحو 12:00.
مرّر المنطقة التي يقرأ مستخدموك الساعة بحسبها. وإذا أهملتها يُستخدم date_default_timezone_get().
الصلاة التالية
تُرجع nextPrayer() أول صلاة تقع بعد لحظة معينة بدقة (الافتراضي: الآن). تقارن الدالة أوقات أمس واليوم وغد، فتجد الصلاة التي تقع بعد منتصف الليل مع تاريخها الصحيح في الحقل date. وبعد العشاء تنتقل إلى فجر الغد.
$p = PrayerTimes::forCity('tehran');
echo json_encode($p->nextPrayer(new DateTimeImmutable('2026-03-21 10:00', $tz)));
// {"name":"dhuhr","time":"12:12","date":"2026-03-21"}
echo json_encode($p->nextPrayer(new DateTimeImmutable('2026-03-21 20:00', $tz)));
// {"name":"fajr","time":"04:42","date":"2026-03-22"}ويظهر أثر ذلك في الصيف شمالًا، حيث قد يقع العشاء بعد منتصف الليل (أوسلو، 21 يونيو):
$tzo = new DateTimeZone('Europe/Oslo');
$osl = new PrayerTimes(59.91, 10.75, 'MWL', 1, $tzo);
echo json_encode($osl->nextPrayer(new DateTimeImmutable('2026-06-21 23:30', $tzo)));
// {"name":"isha","time":"00:12","date":"2026-06-22"}الشروق عنصر في هذا التسلسل (الترتيب: fajr وsunrise وdhuhr وasr وmaghrib وisha). ويجب أن تقع التواريخ في السنوات من 1 إلى 9999 بحسب المنطقة الزمنية: وخارجها تُطلق getTimes() وnextPrayer() الاستثناء InvalidDateException. والصلاة التي يقع تاريخها المحلي بعد 9999-12-31 (أو قبل 0001-01-01) غير موجودة: ففي getTimes() يكون وقتها null، وتُرجع nextPrayer() القيمة null عندما لا تبقى صلاة حتى نهاية 9999-12-31. ويُقرَّب الوقت إلى أقرب دقيقة بحسب إزاحة UTC الدقيقة للمنطقة، فالمنطقة ذات الإزاحة القديمة التي فيها ثوانٍ (مثل التوقيت المحلي المتوسط قبل 1970) لا يُقصّ وقتها إلى دقائق كاملة.
خطوط العرض العالية
في الصيف، بعيدًا عن خط الاستواء، قد لا تبلغ الشمس زاوية الفجر أو العشاء أصلًا، أو تبلغها في ساعة بعيدة جدًا عن الشروق والغروب. تعالج المكتبة ذلك بقاعدة من RtlyKit\Prayer\HighLatitudeRule تختارها بـ withHighLatitudeRule() (تُرجع حاسبة جديدة):
| القاعدة | ما تفعله |
|---|---|
AngleBased (الافتراضي) | تحدّ الفجر والعشاء بجزء من الليل يساوي الزاوية ÷ 60 (للزاوية 18 درجة: 0.3 من الليل) |
NightMiddle | الجزء نصف الليل |
OneSeventh | الجزء سُبع الليل |
None | لا تعديل: الوقت الذي لا تبلغ الشمس زاويته يكون null |
الليل هنا من الغروب إلى شروق اليوم التالي. القاعدة تعمل فقط حين يتعذر حساب الوقت أو يقع خارج الحد؛ وكل وقت آخر يبقى بقيمته الفلكية. ولذلك فالحسابات جنوب نحو 44 درجة شمالًا لم تتغير. وبين نحو 44 و46 درجة شمالًا قرب 21 يونيو تختلف بعض قيم الفجر والعشاء عن الإصدارات 0.1.x، ويصير للوقت الذي كان null قيمة. وللحصول على الناتج القديم استدعِ withHighLatitudeRule(HighLatitudeRule::None). ولا تُغيَّر أبدًا قاعدة ثابتة مثل عشاء مكة (المغرب + 90 أو 120 دقيقة). (ميونخ، 21 يونيو، MWL):
use RtlyKit\Prayer\HighLatitudeRule;
$tzm = new DateTimeZone('Europe/Berlin');
$day = new DateTimeImmutable('2026-06-21', $tzm);
$muc = new PrayerTimes(48.14, 11.58, 'MWL', 1, $tzm);
echo json_encode($muc->getTimes($day)), "\n";
// {"fajr":"02:51","sunrise":"05:13","dhuhr":"13:15","asr":"17:31","maghrib":"21:18","isha":"23:32"}
echo json_encode($muc->withHighLatitudeRule(HighLatitudeRule::None)->getTimes($day)), "\n";
// {"fajr":"01:50","sunrise":"05:13","dhuhr":"13:15","asr":"17:31","maghrib":"21:18","isha":"00:12"}
echo json_encode($muc->withHighLatitudeRule(HighLatitudeRule::OneSeventh)->getTimes($day)), "\n";
// {"fajr":"04:05","sunrise":"05:13","dhuhr":"13:15","asr":"17:31","maghrib":"21:18","isha":"22:26"}وفي أوسلو في اليوم نفسه، حيث لا تبلغ الشمس زاويتي الفجر والعشاء إطلاقًا، تعطي القاعدة الافتراضية قيمتين بدل null (راجع أيضًا العشاء بعد منتصف الليل في القسم السابق):
$day = new DateTimeImmutable('2026-06-21', $tzo);
echo json_encode($osl->getTimes($day)), "\n";
// {"fajr":"02:21","sunrise":"03:54","dhuhr":"13:19","asr":"18:00","maghrib":"22:44","isha":"00:12"}
echo json_encode($osl->withHighLatitudeRule(HighLatitudeRule::None)->getTimes($day)), "\n";
// {"fajr":null,"sunrise":"03:54","dhuhr":"13:19","asr":"18:00","maghrib":"22:44","isha":null}وفي الأماكن التي لا شروق فيها ولا غروب أصلًا (النهار القطبي أو الليل القطبي، مثل ترومسو في 21 يونيو) يبقى sunrise وmaghrib بقيمة null. ويكون dhuhr معرَّفًا دائمًا. ويكون asr بقيمة null حين لا ترتفع الشمس ذلك اليوم بما يكفي ليبلغ الظل طول العصر، ويشمل ذلك الليل القطبي. ويأتي الفجر والعشاء حينئذ من القاعدة، بليلة مرجعية مدتها 12 ساعة حول الزوال الشمسي. وهذا اصطلاح اخترناه في المكتبة وليس اصطلاحًا منشورًا. ومن يريد اصطلاحًا آخر فليستعمل HighLatitudeRule::None ويقرر بنفسه.
$tro = new PrayerTimes(69.65, 18.96, 'MWL', 1, $tzo);
echo json_encode($tro->getTimes($day)), "\n";
// {"fajr":"03:10","sunrise":null,"dhuhr":"12:46","asr":"17:58","maghrib":null,"isha":"22:10"}تحافظ الأوقات الستة على الترتيب fajr وsunrise وdhuhr وasr وmaghrib وisha (بوصفها لحظات؛ وقد يقع العشاء بعد منتصف الليل، ويجوز تساوي الدقائق). وقرب القطبين قد تكسره هندسة الشمس، كأن يقع العصر بعد العشاء عند 89.9 درجة. والوقت الذي يكسر الترتيب يكون null. وفي خطوط العرض العادية لا يُحذف أي وقت بهذه الطريقة. ويُطبَّق الضبط اليدوي بعد هذا الفحص. وفي طريقة طهران يبقى المغرب قبل العشاء مع القاعدتين OneSeventh وNightMiddle.
من المفيد أن تعرف. القاعدة الافتراضية هي AngleBased. وتحت خط العرض 44 شمالًا تقريبًا تطابق كل الأوقات الإصدار 0.1.x. وشمال 44 إلى 46 درجة تقريبًا، قرب انقلاب يونيو، تختلف بعض قيم الفجر والعشاء عن 0.1.x، ويصبح للوقت الذي كان null قيمة. وللحصول على الناتج القديم استدعِ withHighLatitudeRule(HighLatitudeRule::None).
ضبط الدقائق يدويًا
تعتمد بعض المساجد والجهات هامش احتياط في بعض الأوقات. استعمل withTune() لإضافة دقائق (من -30 إلى +30) إلى أي من الأوقات الستة: fajr وsunrise وdhuhr وasr وmaghrib وisha. تُرجع الدالة حاسبة جديدة، وما لم تذكره يبقى صفرًا؛ فاستدعاؤها يستبدل أي ضبط سابق، وwithTune([]) يمسحه. وتدخل الدقائق المضافة في nextPrayer() أيضًا.
$p = PrayerTimes::forCity('tehran');
echo json_encode($p->withTune(['fajr' => 2, 'maghrib' => 3])->getTimes($day)), "\n";
// {"fajr":"04:45","sunrise":"06:07","dhuhr":"12:12","asr":"15:39","maghrib":"18:38","isha":"19:22"}تُضاف الدقائق قبل التقريب، فقد ينتقل الوقت عبر منتصف الليل (23:50 مع +20 يصبح 00:10). والمفتاح غير المعروف، والقيمة التي ليست int أو الخارجة عن المجال، تُثير InvalidPrayerConfigException مع السياق key.
الاستثناءات
الإعداد غير الصالح يُثير InvalidPrayerConfigException، وهي ترث RtlyKitException (ومن ثَمّ \InvalidArgumentException)، مثلًا:
new PrayerTimes(35, 51, 'Foo');
// Unknown calculation method: Foo. Available: MWL, ISNA, Egypt, Makkah, Karachi, Tehran
new PrayerTimes(35, 51, 'MWL', 3);
// Invalid Asr factor: 3 (use 1 or 2)
PrayerTimes::forCity('paris');
// Unknown city: paris
new PrayerTimes(95, 51, 'MWL');
// The latitude must be between -90 and 90 degrees
$p->withTune(['fajr' => 31]);
// Tune for fajr must be an integer from -30 to 30 minutesانظر معالجة الأخطاء لالتقاط كل أخطاء المكتبة بعبارة catch واحدة.
ما الذي فحصناه
الزوايا اصطلاحات، لذلك الفحص المفيد هو حساب مدينة وتاريخ ومقارنة النتيجة بجدول تنشره جهة تستخدم الطريقة نفسها. أجرينا ذلك في 2026-10-08. ويُعدّ الفرق ضمن نحو دقيقة إلى دقيقتين توافقًا. أما المواقع المجمِّعة فلا تُحتسب، لأنها تستعمل الزوايا المنشورة نفسها.
| الطريقة | قورنت بـ | النتيجة |
|---|---|---|
| طهران | معهد الجيوفيزياء بجامعة طهران، جداول 1405: طهران ومشهد وأصفهان وشيراز في أربعة تواريخ | الفجر والشروق والظهر والمغرب ضمن دقيقة واحدة. ولا يحتوي الجدول على عمود للعصر ولا للعشاء. ويذكر أحد أعضاء مجلس المعهد الفجر 17.7 والمغرب 4.5 درجة |
| مكة | تقويم أم القرى: خمسة تواريخ خارج رمضان وتاريخان في رمضان 1447 | الأوقات الستة كلها ضمن دقيقة واحدة، ومنها العشاء = المغرب + 120 في رمضان |
| مصر | دار الإفتاء، القاهرة: ستة تواريخ في أكتوبر 2026 | الأوقات الستة كلها ضمن دقيقة واحدة |
| MWL (18 / 17) | تركيا، ديانت: إسطنبول وأنقرة وإزمير في أربعة تواريخ بين 8 أكتوبر و7 نوفمبر 2026 | الإمساك واليتسي المنشوران يوافقان الفجر والعشاء عندنا ضمن دقيقة واحدة، فهما يناسبان زاويتي 18 / 17 نفسيهما |
| كراتشي (18 / 18) مع العصر الحنفي | جامعة العلوم الإسلامية العلامة بنوري تاون، كراتشي: الأيام الـ 31 من أكتوبر 2026 | الفجر والشروق والعصر والغروب والعشاء ضمن دقيقة واحدة، وتطابق تام في معظم الأيام. وقاعدة العصر الحنفي (ظل بمثلي الارتفاع) هي التي تذكرها دار العلوم ديوبند |
| كراتشي (18 / 18) | ماليزيا، JAKIM e-solat، المنطقة SGR01: أربعة تواريخ في أكتوبر 2026 | يختلف الفجر والعشاء بدقيقة إلى دقيقتين، وهذا يناسب 18 / 18 |
| ISNA (15 / 15) | المجلس الفقهي لأمريكا الشمالية | يذكر المجلس 15 درجة للفجر وللعشاء معًا في الإعداد الموافق لـ ISNA |
| الشروق والغروب | حاسبة NOAA الشمسية وموقع timeanddate | ضمن دقيقة واحدة |
من المفيد أن تعرف. صفحات بنوري تاون وديانت وJAKIM لا تذكر زواياها، فهذه المقارنات تبيّن أن جداولها تناسب زوايانا. ولم نجد جداول صادرة عن جامعة العلوم الإسلامية في كراتشي ولا عن ISNA ولا عن رابطة العالم الإسلامي، ولا جدولًا رسميًا لطهران فيه العشاء والعصر. وتنسب صفحات ثانوية زاوية عشاء طهران، 14 درجة، إلى معهد لوا في قم. أما خطوط العرض العالية والارتفاع والتواريخ غير المذكورة فقد قورنت بحسابات مستقلة لا بجداول منشورة. وللاستخدام الديني أو القانوني قارن بجدول الجهة المحلية المختصة. وللتفاصيل عن بقية البيانات انظر الدقة والبيانات.
Was this page helpful?