PDA

View Full Version : سوال: تبدیل برنامه به فرمول



nsco_nsco
سه شنبه 28 دی 1389, 07:54 صبح
سلام دوستان من یک برنامه دارم که میاد تاریخ رو به صورت قمری نمایش می دهد و من زیاد در مورد برنامه نویسی وب نمی دونم ممنون می شم اگر بتونید فرمول خام ریاضی این برنامه را در بیارید با تشکر از همه شما ببخشید البته :لبخندساده:



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("January","February","March","April","May","June","July","August","September","October","November","December");

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);
document.write(h.toString() + "");




این هم کد نمایشش در یک فایل اچ تی ام ال :



<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<!-- Java Script Hijri Date : Code by www.esfahanhost.com / Please Dont Delete this Line -->


<font face="Tahoma" style="font-size: 9pt">
<script type="text/javascript" src='hijri.js'></script>
</font>



لطفا دوستان سریع پاسخ دهید کارم لنگ مونده با تشکر:تشویق::لبخند::قلب:

mohsen6500
سه شنبه 28 دی 1389, 08:24 صبح
سالم دوست عزیز چرا خودتو اینقدر اذیت کردی؟!!
اینم کدش
به این لینک مراجعه بفرمایید (http://barnamenevis.org/showthread.php?270187-%DA%A9%D8%AF-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D9%82%D9%85%D8%B1%DB%8C)

nsco_nsco
سه شنبه 28 دی 1389, 08:33 صبح
سلام دوستان
ممنون از اینکه سریع پاسخ دادید اما راستیتش فرمول رو احتیاج دارم و می خوام در زبان دیگری استفاده کنم ممنون می شم کمکم کنید با تشکر فراوان:قلب:

mohsen6500
سه شنبه 28 دی 1389, 08:51 صبح
سلام برای فراخوانی تابع مورد نظرت از این استفاده کن


<script language="javascript">hijriToFixed();</script>

nsco_nsco
سه شنبه 28 دی 1389, 09:28 صبح
سلام ممنون از جوابتون
ولی ببینید مشکل کجاست
خیلی گشتم تا یک فرمول خام برای طراحی تاریخ قمری پیدا کنم که نشود مثلا بگه این رو با اون جمع کن و بعد تقسیم کن میشه روز و سال و ماه قمری چند تا فایل پیدا کردم که یکیش همین بود که گزاشتم حالا از شما دوستان خواهشی دارم اگر می تونید این فایل را تجزیه کنید و فرمول خام را بدست اورید با تشکر فراوان :قلب:

nsco_nsco
سه شنبه 28 دی 1389, 10:32 صبح
سلام دوستان
هیچ کس نمیتونه به ما کمک کنه خیلی حیاتی هست :متعجب:

mohsen6500
سه شنبه 28 دی 1389, 12:43 عصر
دوست عزیز این سوالتون رو توی تالار جاوا اسکریپت مطرح نمایید
اونجا بهتر میتونید به جواب برسید
من خیلی از این کدها چیزی متوجه نمی شم