الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كود التقويم الهجري و الميلادي

بدأه abu mojahed في 19 مارس 2010 · 10 رد · 9,253 مشاهدة · في قسم البرمجة بــ Javascript
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

يا اخوان السلام عليكم و رحمة الله و بركاته ,, هذا الكود الخاص بلغة الجافا هو مثل المثال التالي ,,

الجمعة 19 مارس 2010 ميلادى - 3 ربيع ثانى 1431 هجرى

انا اريد تعديل الكود بحيث يكون التاريخ الهجري قبل الميلادي



var fixd;

function isGregLeapYear(year)
{
return year%4 == 0 && year%100 != 0 || year%400 == 0;
}


function gregToFixed(year, month, day)
{
var a = Math.floor((year - 1) / 4);
var b = Math.floor((year - 1) / 100);
var c = Math.floor((year - 1) / 400);
var d = Math.floor((367 * month - 362) / 12);

if (month <= 2)
e = 0;
else if (month > 2 && isGregLeapYear(year))
e = -1;
else
e = -2;

return 1 - 1 + 365 * (year - 1) + a - b + c + d + e + day;
}

function Hijri(year, month, day)
{
this.year = year;
this.month = month;
this.day = day;
this.toFixed = hijriToFixed;
this.toString = hijriToString;
}

function hijriToFixed()
{
return this.day + Math.ceil(29.5 * (this.month - 1)) + (this.year - 1) * 354 +
Math.floor((3 + 11 * this.year) / 30) + 227015 - 1;
}

function hijriToString()
{
var months = new Array("محرم","صفر","ربيع أول","ربيع ثانى","جمادى أول","جمادى ثانى","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة");
return this.day + " " + months[this.month - 1]+ " " + this.year;
}

function fixedToHijri(f)
{
var i=new Hijri(1100, 1, 1);
i.year = Math.floor((30 * (f - 227015) + 10646) / 10631);
var i2=new Hijri(i.year, 1, 1);
var m = Math.ceil((f - 29 - i2.toFixed()) / 29.5) + 1;
i.month = Math.min(m, 12);
i2.year = i.year;
i2.month = i.month;
i2.day = 1;
i.day = f - i2.toFixed() + 1;
return i;
}

var tod=new Date();
var weekday=new Array("الأحد","الإثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت");
var monthname=new Array("يناير","فبراير","مارس","إبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر");

var y = tod.getFullYear();
var m = tod.getMonth();
var d = tod.getDate();
var dow = tod.getDay();
document.write(weekday[dow] + " " + d + " " + monthname[m] + " " + y);
m++;
fixd=gregToFixed(y, m, d);
var h=new Hijri(1421, 11, 28);
h = fixedToHijri(fixd);
document.write(" ميلادى - " + h.toString() + " هجرى   ");

</script>
<script language="JavaScript">

#2

نقل هذا السطر الى اخر الكود البرمجي فقط لا غير

document.write(weekday[dow] + " " + d + " " + monthname[m] + " " + y);

ولكن عملية الكتابة هكذا خطا

ككتابة بموقع كراي لي

يجب التعامل مع

innerHTML

بدل

document.write

هجري وميلادي.rar

In bad state

#3

ربي يبارك فيك يا غالي ,, :)

#4
AsJsGle كتب:

نقل هذا السطر الى اخر الكود البرمجي فقط لا غير

document.write(weekday[dow] + " " + d + " " + monthname[m] + " " + y);

ولكن عملية الكتابة هكذا خطا

ككتابة بموقع كراي لي

يجب التعامل مع

innerHTML

بدل

document.write

ولكن هل من الممكن اخ الكريم ان تغير كود السكريبت باستعمال innerHTML ؟

شكراً.

#5

بتمنى يكون هيك طلبك

هجري وميلادي.rar

In bad state

#6

اخي الغالي AsJsGle،

لقد حاولت بالكود التالي ولكن لن يتم علرض التاريخ :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>date with js</title>
</head>

<body>
<script language="Javascript" type="text/javascript">
var fixd;
function isGregLeapYear(year)
{
return year%4 == 0 && year%100 != 0 || year%400 == 0;
}
function gregToFixed(year, month, day)
{var a = Math.floor((year - 1) / 4);
var b = Math.floor((year - 1) / 100);
var c = Math.floor((year - 1) / 400);
var d = Math.floor((367 * month - 362) / 12);
if (month <= 2)
e = 0;
else if (month > 2 && isGregLeapYear(year))
e = -1;
else
e = -2;
return 1 - 1 + 365 * (year - 1) + a - b + c + d + e + day;}
function Hijri(year, month, day)
{this.year = year;this.month = month;this.day = day;this.toFixed = hijriToFixed;this.toString = hijriToString;}
function hijriToFixed()
{
return this.day + Math.ceil(29.5 * (this.month - 1)) + (this.year - 1) * 354 +Math.floor((3 + 11 * this.year) / 30) + 227015 - 1;
}
function hijriToString()
{
var months = new Array("محرم","صفر","ربيع أول","ربيع ثانى","جمادى أول","جمادى ثانى","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة");
return this.day + " " + months[this.month - 1]+ " " + this.year;
}
function fixedToHijri(f)
{
var i=new Hijri(1100, 1, 1);
i.year = Math.floor((30 * (f - 227015) + 10646) / 10631);
var i2=new Hijri(i.year, 1, 1);
var m = Math.ceil((f - 29 - i2.toFixed()) / 29.5) + 1;
i.month = Math.min(m, 12);i2.year = i.year;i2.month = i.month;i2.day = 1;
i.day = f - i2.toFixed() + 1;
return i;
}
var tod=new Date();
var weekday=new Array("الأحد","الإثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت");
var monthname=new Array("يناير","فبراير","مارس","إبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر");
var y = tod.getFullYear();
var m = tod.getMonth();
var d = tod.getDate();
var dow = tod.getDay();
m++;
fixd=gregToFixed(y, m, d);
var h=new Hijri(1421, 11, 28);
h = fixedToHijri(fixd);
var tt=" هجرى   " + h.toString() + "    ميلادى  "+weekday[dow] + " " + d + " " + monthname[m] + " " + y;
document.getElementById('t').innerHTML=tt;
</script>

<div id="t"> </div>

</body>

</html>

اين الخلل مشكورا ً ؟

تم تعديل هذه المشاركة بواسطة apt في 11 مايو 2010 في 17:00

#7

صديقي الجافا سكريبت مقسمة قسمين

الاول هو esmascript وهو مدعوم من شركة Esma

الثاني هو dom وهو مدعوم من W3C

انت تستخدم كود dom بشكل مباشر مع الجافا سكريبت

لذلك عليك باستخدام الاحداث

وربط القيمة الخاصة بالدييف ضمن تابع

اتمنى ان تكون قد وضحت الفكرة :)

تم تعديل هذه المشاركة بواسطة AsJsGle في 11 مايو 2010 في 17:10

In bad state

#8

1 - اول مرة اسمع بوجود قسمين من الجافا سكريبت.

2 - الـ dom اسمع بها ولا اعرف معناها.

3 - ما فهمته هو انه لا يتم عرض ما بداخل innerHTML الا بوجود حدث ما كـ OnClick مثلا وفي هذه الحالة لا اجد حدثا يناسب عرض التاريخ في الصفحة.

#9

تم تصميم وتطوير الجافا سكريبت بالبدايات على يد Brendan Eich

(مبرمج حاصل على اجازة في الرياضيات وعلوم الحواسيب من جامعة Santa Clara

ومن ثم حصل على شهادة دراسات عليا ماجستير في سنة 1986 من جامعة Illinois at Urbana-Champaign بدا بعمله مع ال Netscape ومن ثم Mozilla )

حيث كانت بالبداية باسم Mocha ومن ثم سميت باسم LiveScript وبالنهاية نحن نعرفها بسمها javascript نفس الاسم ECMAScript

تم تحويل الاسم من live الى java بالتزامن مع دعم ال netscape لل java ضمن مستعرضها حيث تم انتاج اjavascript وتطويرها في مستعرض ال netscape اصدار 2.0B3 بالعام 1995

صديقي

لغة الجافا سكريبت هي لغة متل اي لغة وهي لغة مترجمة ويمكنك الحصول على المترجم الخاص بها من موقع موزيلا فير فوكس كما يمكنك تحميل اخر اصدار لطريقة كتابتها

الاصدار الخامس من موقع esma

المهم اللغة تم دمجها مع جميع المستعرضات وبذلك اصحت تتعامل مع الdom

ان اردت الاستزادة لا مشكلة

In bad state

#10

الـ DOM هو صفحات الويب ؟

ثم ما حل مشكلة innerHTML من غير body onload ؟

#11

اذا لم يكن بالأمر السلبي، هل من الممكن اضافة عرض الساعة الى جانب التاريخ ؟

تم ايجاد حل لعرض التاريخ بدون اللجوء الى احداث الجافا سكريبت (ارجو التصحيح ان كان هناك خطا ما) :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>date with js</title>
</head>

<body>

<script language="Javascript" type="text/javascript">
var fixd;
function isGregLeapYear(year)
{
return year%4 == 0 && year%100 != 0 || year%400 == 0;
}
function gregToFixed(year, month, day)
{
var a = Math.floor((year - 1) / 4);
var b = Math.floor((year - 1) / 100);
var c = Math.floor((year - 1) / 400);
var d = Math.floor((367 * month - 362) / 12);
if (month <= 2)
e = 0;
else if (month > 2 && isGregLeapYear(year))
e = -1;
else
e = -2;
return 1 - 1 + 365 * (year - 1) + a - b + c + d + e + day;}
function Hijri(year, month, day)
{this.year = year;this.month = month;this.day = day;this.toFixed = hijriToFixed;this.toString = hijriToString;}
function hijriToFixed()
{
return this.day + Math.ceil(29.5 * (this.month - 1)) + (this.year - 1) * 354 +Math.floor((3 + 11 * this.year) / 30) + 227015 - 1;
}
function hijriToString()
{
var months = new Array("محرم","صفر","ربيع أول","ربيع ثانى","جمادى أول","جمادى ثانى","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة");
return this.day + " " + months[this.month - 1]+ " " + this.year;
}
function fixedToHijri(f)
{
var i=new Hijri(1100, 1, 1);
i.year = Math.floor((30 * (f - 227015) + 10646) / 10631);
var i2=new Hijri(i.year, 1, 1);
var m = Math.ceil((f - 29 - i2.toFixed()) / 29.5) + 1;
i.month = Math.min(m, 12);i2.year = i.year;i2.month = i.month;i2.day = 1;
i.day = f - i2.toFixed() + 1;
return i;
}
var tod=new Date();
var weekday=new Array("الأحد","الإثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت");
var monthname=new Array("يناير","فبراير","مارس","إبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر");
var y = tod.getFullYear();
var m = tod.getMonth();
var d = tod.getDate();
var dow = tod.getDay();
m++;
fixd=gregToFixed(y, m, d);
var h=new Hijri(1421, 11, 28);
h = fixedToHijri(fixd);
//var tt=" هجرى   " + h.toString() + "    ميلادى  "+weekday[dow] + " " + d + " " + monthname[m] + " " + y;
var tt= h.toString() + " هجرى - الموافق بـ -     "+weekday[dow] + " " + d + " " + monthname[m] + " " + y + " ميلادى ";
function prt()
{
document.getElementById('t').innerHTML=tt;
}
//prt();
</script>

<div id="t" style="float:right;">
<script language="Javascript" type="text/javascript">
prt();
</script>
nbsp;</div>

</body>

</html>

مواضيع مشابهة