اذهب إلى المحتوى

السؤال

نشر

استخدم الدالة DateTime لحساب وعرض التوقيت في الموقع الخاص بي  ، ارغب في فى تحويل طريقة عرض التواريخ بالتقويم الهجري في الموقع ، على سبيل المثال

 

الأحد 02 شوال 1436 09:01:21 مساءً


هل يمكن تعديل الدالة DateTime بعرض التاريخ بالشكل الهجري  ؟ ام احتاج الى استخدام دالة اخرى  ؟

 

 

Recommended Posts

  • 0
نشر

تم إنشاء دالة لإظهار التاريخ باستخدام التقويم الهجري، وهذه الدالة يجب إرفاقها مع ملف المشروع، الشيفرة المصدرية للدالة:

function gmod(n,m){
	return ((n%m)+m)%m;
}

function kuwaiticalendar(adjust){
	var today = new Date();
	if(adjust) {
		adjustmili = 1000*60*60*24*adjust; 
		todaymili = today.getTime()+adjustmili;
		today = new Date(todaymili);
	}
	day = today.getDate();
	month = today.getMonth();
	year = today.getFullYear();
	m = month+1;
	y = year;
	if(m<3) {
		y -= 1;
		m += 12;
	}

	a = Math.floor(y/100.);
	b = 2-a+Math.floor(a/4.);
	if(y<1583) b = 0;
	if(y==1582) {
		if(m>10)  b = -10;
		if(m==10) {
			b = 0;
			if(day>4) b = -10;
		}
	}

	jd = Math.floor(365.25*(y+4716))+Math.floor(30.6001*(m+1))+day+b-1524;

	b = 0;
	if(jd>2299160){
		a = Math.floor((jd-1867216.25)/36524.25);
		b = 1+a-Math.floor(a/4.);
	}
	bb = jd+b+1524;
	cc = Math.floor((bb-122.1)/365.25);
	dd = Math.floor(365.25*cc);
	ee = Math.floor((bb-dd)/30.6001);
	day =(bb-dd)-Math.floor(30.6001*ee);
	month = ee-1;
	if(ee>13) {
		cc += 1;
		month = ee-13;
	}
	year = cc-4716;

	if(adjust) {
		wd = gmod(jd+1-adjust,7)+1;
	} else {
		wd = gmod(jd+1,7)+1;
	}

	iyear = 10631./30.;
	epochastro = 1948084;
	epochcivil = 1948085;

	shift1 = 8.01/60.;
	
	z = jd-epochastro;
	cyc = Math.floor(z/10631.);
	z = z-10631*cyc;
	j = Math.floor((z-shift1)/iyear);
	iy = 30*cyc+j;
	z = z-Math.floor(j*iyear+shift1);
	im = Math.floor((z+28.5001)/29.5);
	if(im==13) im = 12;
	id = z-Math.floor(29.5001*im-29);

	var myRes = new Array(8);

	myRes[0] = day; //calculated day (CE)
	myRes[1] = month-1; //calculated month (CE)
	myRes[2] = year; //calculated year (CE)
	myRes[3] = jd-1; //julian day number
	myRes[4] = wd-1; //weekday number
	myRes[5] = id; //islamic date
	myRes[6] = im-1; //islamic month
	myRes[7] = iy; //islamic year

	return myRes;
}
function writeIslamicDate(adjustment) {
	var wdNames = new Array("Ahad","Ithnin","Thulatha","Arbaa","Khams","Jumuah","Sabt");
	var iMonthNames = new Array("Muharram","Safar","Rabi'ul Awwal","Rabi'ul Akhir",
	"Jumadal Ula","Jumadal Akhira","Rajab","Sha'ban",
	"Ramadan","Shawwal","Dhul Qa'ada","Dhul Hijja");
	var iDate = kuwaiticalendar(adjustment);
	var outputIslamicDate = wdNames[iDate[4]] + ", " 
	+ iDate[5] + " " + iMonthNames[iDate[6]] + " " + iDate[7] + " AH";
	return outputIslamicDate;
}

ويمكنك عرض التاريخ الهجري عن طريق كتابة:

	document.write(writeIslamicDate());

فسيظهر التاريخ كالتالي:

Jumuah, 28 Dhul Qa'ada 1436 AH

لاحظ أن التاريخ يكتب باللغة الإنجليزية.

وإذا احتجت فقط لعرض السنة الهجرية (مثلا لوضعها في footer ...)، يمكنك فعل ذلك بسهولة عن طريق إرفاق الجافا سكربت إلى موقعك:

var GregorianYear = (new Date()).getFullYear();
var HijriYear = Math.round((GregorianYear - 622) * (33 / 32));

أو يمكنك عرض السنة الميلادية بجانب السنة الهجرية عن طريق هذه الشيفرة بلغة جافاسكربت:

<script type="text/javascript">document.write((new Date()).getFullYear())</script> م - <script type="text/javascript">var y = (new Date()).getFullYear();var h = Math.round((y - 622) * (33 / 32));document.write(h)</script> هـ

ملاحظة: هنالك دائما فرصة خطأ بالتاريخ الهجرين بيوم أو يومين أو حتى ثلاثة.

المصدر 1 2

  • 0
نشر
بتاريخ 3 ساعة قال محمد الحربي33:

التاريخ مختلف طبع اليوم 25 شوال 1447 

وفي تفويم ام القرى 24 شوال 1447

https://www.ihijri.com/date/

نعم بالفعل الحساب لن تكون دقيقة بنسبة 100٪ وذلك لأن الحسابات معقدة للتاريخ الهجري حيث يوجد عدد من القواعد والتعقيدات في حساب التاريخ الهجري التقليدي التي لم تتم مراعاتها في الكود المرفق . لذلك من الأفضل استخدام مكتبة خارجية إذا كنت تحتاج إلى دقة ومرونة أكثر في التعامل مع التاريخ الهجري.

وتستطيع استخدام المكتبة المعروفة باسم "Hijri.js" وهي مكتبة JavaScript مفتوحة المصدر تتيح لك التعامل مع التواريخ الهجرية بتقويم أم القرى ويمكنك تنزيل المكتبة من مستودع GitHub الخاص بها .

وهنا شرح استخدامها، وهي بسيطة:

وإليك كود بسيط لإستخدام المكتبة :

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>

<body>



    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.30.1/moment-with-locales.min.js"
        integrity="sha512-4F1cxYdMiAW98oomSLaygEwmCnIP38pb4Kx70yQYqRwLVCs3DbRumfBq82T08g/4LJ/smbFGFpmeFlQgoDccgg=="
        crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script src="moment-hijri.js"></script>
    <script>
        moment.locale('ar-SA');// 2- Set the global locale to `ar-SA`
        m = moment();
        console.log(m.format('iD iMMMM  iYYYY هـ الموافق YYYY/M/Dم'));
        console.log(m.format('iYYYY/iM/iDهـ الموافق YYYY/M/Dم'));
    </script>
</body>

</html>

ولقد قمت بإرفاق الملف الخاص بالمكتبة أيضا.

moment-hijri.js

  • 0
نشر
بتاريخ 15 ساعة قال محمد عاطف25:

نعم بالفعل الحساب لن تكون دقيقة بنسبة 100٪ وذلك لأن الحسابات معقدة للتاريخ الهجري حيث يوجد عدد من القواعد والتعقيدات في حساب التاريخ الهجري التقليدي التي لم تتم مراعاتها في الكود المرفق . لذلك من الأفضل استخدام مكتبة خارجية إذا كنت تحتاج إلى دقة ومرونة أكثر في التعامل مع التاريخ الهجري.

وتستطيع استخدام المكتبة المعروفة باسم "Hijri.js" وهي مكتبة JavaScript مفتوحة المصدر تتيح لك التعامل مع التواريخ الهجرية بتقويم أم القرى ويمكنك تنزيل المكتبة من مستودع GitHub الخاص بها .

وهنا شرح استخدامها، وهي بسيطة:

وإليك كود بسيط لإستخدام المكتبة :

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>

<body>



    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.30.1/moment-with-locales.min.js"
        integrity="sha512-4F1cxYdMiAW98oomSLaygEwmCnIP38pb4Kx70yQYqRwLVCs3DbRumfBq82T08g/4LJ/smbFGFpmeFlQgoDccgg=="
        crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script src="moment-hijri.js"></script>
    <script>
        moment.locale('ar-SA');// 2- Set the global locale to `ar-SA`
        m = moment();
        console.log(m.format('iD iMMMM  iYYYY هـ الموافق YYYY/M/Dم'));
        console.log(m.format('iYYYY/iM/iDهـ الموافق YYYY/M/Dم'));
    </script>
</body>

</html>

ولقد قمت بإرفاق الملف الخاص بالمكتبة أيضا.

moment-hijri.js 32.21 kB · 1 تنزيل

مشكور على الايضاح والمساعده

بالمرفقات تقويم صحيح فيه عرض تاريخين تاريخ هجري من 1 الى نهاية الشهر وتاريخ ميلادي من 1 الى نهاية الشهر وقمت بتطويره واضافة وقت الصلاة له وغيرت طريقة عرض الشهر الى جدول هذا تعديلي

http://forum.alshafeen.site/hcalarabic/prayer/monthCalendar.php

 

Stitchcraft_٢٠٢٦٠٤١٣-٠٤٠٩٢٠.png

hijri-date-2025-05-07.zip

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...