• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

محاسبه اوقات شرعی

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
40
محل سکونت
تهران-ونک-php-mysql
سلام
یه کد php می خواهم یا javascript برای محاسبه اوقات شرعی
من برای خارج می خواهم یعنی المان
حالا هر کی می تونه کمک کنه ببینیم به چی می رسیم
مرسی
 

متالیک

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
31 مارس 2007
نوشته‌ها
2,133
لایک‌ها
286
سلام

تا اونجایی که من می دونم فرمول خاصی نداره. تمام اوقات شرعی یک سال رو باید از تقویم خارج کنید و داخل دیتابیس بنویسید و از اون استفاده کنید و مجددا برای سال آینده دیتابیس رو آپدیت کنید.

نکته 1: ساعت اذان هر روز یک دقیقه تغییر می کند (بسته به این که در چه فصلی از سال هستیم ممکنه افزایش و کاهش پیدا کنه). مثلا اگر امروز ساعت 8 و 36 دقیقه شب اذان مغرب رو بگن فردا 8 و 37 دقیقه می گن (این برای حالاست که تابستونه).
نکته 2: اگر امروز 8 و 36 دقیقه اذان مغرب رو بگن سال دیگه همین موقع معلوم نیست تو همین ساعت اذان بگن به 2 دلیل: 1. هر سال چند دقیقه تفاوت داره (کم و زیاد می شه)، 2. ممکنه سال دیگه ساعت ها رو عقب و جلو نکنن (چون قانون هر روز عوض می شه!)
نکته 3: بسته به این که اذان عشاء و عصر رو هم نیاز داشته باشید باید این اطلاعات رو هم به دست بیارید و به دیتابیس اضافه کنید.

موفق باشید
 

ODE112

کاربر قدیمی پرشین تولز
تاریخ عضویت
24 مارس 2006
نوشته‌ها
1,400
لایک‌ها
1,288
محل سکونت
aquarium
سلام

تا اونجایی که من می دونم فرمول خاصی نداره. تمام اوقات شرعی یک سال رو باید از تقویم خارج کنید و داخل دیتابیس بنویسید و از اون استفاده کنید و مجددا برای سال آینده دیتابیس رو آپدیت کنید.

نکته 1: ساعت اذان هر روز یک دقیقه تغییر می کند (بسته به این که در چه فصلی از سال هستیم ممکنه افزایش و کاهش پیدا کنه). مثلا اگر امروز ساعت 8 و 36 دقیقه شب اذان مغرب رو بگن فردا 8 و 37 دقیقه می گن (این برای حالاست که تابستونه).
نکته 2: اگر امروز 8 و 36 دقیقه اذان مغرب رو بگن سال دیگه همین موقع معلوم نیست تو همین ساعت اذان بگن به 2 دلیل: 1. هر سال چند دقیقه تفاوت داره (کم و زیاد می شه)، 2. ممکنه سال دیگه ساعت ها رو عقب و جلو نکنن (چون قانون هر روز عوض می شه!)
نکته 3: بسته به این که اذان عشاء و عصر رو هم نیاز داشته باشید باید این اطلاعات رو هم به دست بیارید و به دیتابیس اضافه کنید.

موفق باشید
فرمول که باید داشته باشه! چند وقت پیش که داشتم این تقویم خورشیدی که تو امضام هست رو میساختم دنبال این بودم که براش فرمول محاسبه اوقات شرعی هم بذارم که بعدا پشیمون شدم! ولی چند تا سورس پیدا کردم که از بر اساس زاویه زمین نسب به خورشید و طول و عرض جغرافیایی شهری که بهش میدادی محاسبه میکرد... واسه ویندوز بود اون البته...

واسه PHP ندیدم خدم ولی خب وقتی فرمول داره حتما با php هم میشه ساخت...
 

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
40
محل سکونت
تهران-ونک-php-mysql
چرا كامل فرمول داره
javascrip اش رو دارم ولي يكم زياده سخته تبديل به php كردنش
 

ODE112

کاربر قدیمی پرشین تولز
تاریخ عضویت
24 مارس 2006
نوشته‌ها
1,400
لایک‌ها
1,288
محل سکونت
aquarium
کدتو بذار تبدیلش میکنیم...
 

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
40
محل سکونت
تهران-ونک-php-mysql
كد javascript كه كار مي كنه يكم هم تغييرش دادم
ولي php مي خواهم

يا اينكه زمان رو بشه عوض كرد يعني مثلا بر اساس ساعت المان نشون بده
PHP:
<script>

function main()
{
    var i = document.getElementById("cities").selectedIndex;
    if(i==0)
        return

    var m=document.getElementById("month").selectedIndex+1;
    var d=eval(document.getElementById("day").value);
    var lg=eval(document.getElementById("longitude").value);
    var lat=eval(document.getElementById("latitude").value);
//    var lg=52.5125;
//    var lat=29.635;
    var ep=sun(m,d,4,lg)
    var zr=ep[0];
    delta=ep[1];
    ha=loc2hor(108.0,delta,lat)
    var t1=Round(zr-ha,24)
    ep=sun(m,d,t1,lg)
    zr=ep[0];
    delta=ep[1];
    ha=loc2hor(108.0,delta,lat)
    var t1=Round(zr-ha,24)
    document.getElementById("t1").innerHTML=hms(t1);
//
//   t2= Sun rise
//
    ep=sun(m,d,6,lg)
    zr=ep[0];
    delta=ep[1];
    ha=loc2hor(90.833,delta,lat)
    var t2=Round(zr-ha,24)
    ep=sun(m,d,t2,lg)
    zr=ep[0];
    delta=ep[1];
    ha=loc2hor(90.833,delta,lat)
    t2=Round(zr-ha,24)
    document.getElementById("t2").innerHTML=hms(t2);
//    
//    zr=Zohr
//
    ep=sun(m,d,12,lg)
    ep=sun(m,d,ep[0],lg)
    zr=ep[0];
    document.getElementById("zr").innerHTML=hms(zr);
//
//   t2= Sun set
//
    ep=sun(m,d,18,lg)
    zr=ep[0];
    delta=ep[1];
    ha=loc2hor(90.833,delta,lat)
    var t3=Round(zr+ha,24)
    ep=sun(m,d,t3,lg)
    zr=ep[0];
    delta=ep[1];
    ha=loc2hor(90.833,delta,lat)
    t3=Round(zr+ha,24)
    document.getElementById("t3").innerHTML=hms(t3);
//
//   t2= Maghreb
//
    ep=sun(m,d,18.5,lg)
    zr=ep[0];
    delta=ep[1];
    ha=loc2hor(94.3,delta,lat)
    var t4=Round(zr+ha,24)
    ep=sun(m,d,t4,lg)
    zr=ep[0];
    delta=ep[1];
    ha=loc2hor(94.3,delta,lat)
    t4=Round(zr+ha,24)
    document.getElementById("t4").innerHTML=hms(t4);
    
}
function sun(m,d,h,lg)
{
    if(m<7)
        d= 31*(m-1)+d+h/24;
    else
        d=6+30*(m-1)+d+h/24;
    var M=74.2023+0.98560026*d;
    var L=-2.75043+0.98564735*d;
    var lst=8.3162159+0.065709824*Math.floor(d)+1.00273791*24*(d%1)+lg/15;    
    var e=0.0167065;
    var omega=4.85131-0.052954*d;
    var ep=23.4384717+0.00256*cosd(omega);
    var ed=180.0/Math.PI*e;
    var u=M;
    for(var i=1;i<5;i++)
        u=u-(u-ed*sind(u)-M)/(1-e*cosd(u));
    var v=2*atand(tand(u/2)*Math.sqrt((1+e)/(1-e)));
    var theta=L+v-M-0.00569-0.00479*sind(omega);
    var delta=asind(sind(ep)*sind(theta));
    var alpha=180.0/Math.PI*Math.atan2(cosd(ep)*sind(theta),cosd(theta));
    if(alpha>=360)
        alpha-=360;
    var ha=lst-alpha/15;
    var zr=Round(h-ha,24);
    return ([zr,delta])
}
function init()
{
        lgs= [0,13.25,08.41,10.02,11.35];
        lats=[0,52.30,50.07,53.33,48.08];
}
function coord()
{
    var c=document.getElementById("cities");
    var i = c.selectedIndex;
    if(i==0)
    {
        document.getElementById("longitude").value="";
        document.getElementById("latitude").value="";
    }
    else
    {
        document.getElementById("longitude").value=lgs[i].toString()
        document.getElementById("latitude").value=lats[i].toString()
    }
}
function sind(x){return(Math.sin(Math.PI/180.0*x));}
function cosd(x){return(Math.cos(Math.PI/180.0*x));}
function tand(x){return(Math.tan(Math.PI/180.0*x));}
function atand(x){return(Math.atan(x)*180.0/Math.PI);}
function asind(x){return(Math.asin(x)*180.0/Math.PI);}
function acosd(x){return(Math.acos(x)*180.0/Math.PI);}
function sqrt(x){return(Math.sqrt(x));}
function frac(x){return(x%1);}
function floor(x){return(Math.floor(x));}
function ceil(x){return(Math.ceil(x));}
function loc2hor(z,d,p){
    return(acosd((cosd(z)-sind(d)*sind(p))/cosd(d)/cosd(p))/15);
}
function Round(x,a){
    var tmp=x%a;
    if(tmp<0)
        tmp+=a;
    return(tmp)
}
function hms(x)
{
    x=Math.floor(3600*x);
    h=Math.floor(x/3600);
    mp=x-3600*h;
    m=Math.floor(mp/60);
    s=Math.floor(mp-60*m);
    return(((h<10)? "0" : "")+h.toString()+":"+((m<10)? "0" : "")+m.toString()+":"+((s<10)? "0" : "")+s.toString())
}


</script>
<style>
<!--
body      { font-family: Tahoma;font-weight:normal; font-size: 12px}
td      { font-family: Tahoma;font-weight:normal; font-size: 12px}

-->
</style>";



<body onload="init()" style="text-align: center">
<table  width="95%" class=table align="center">

    <tr>
        <td width="100%" align="center">
        <table border="1" width="60%" id="table3" dir="ltr">
            <tr>
                <td align="center" id="t1">&nbsp;</td>
                <td dir="rtl" width="50%"><span lang="fa">اذان صبح</span></td>
            </tr>
            <tr>
                <td align="center" id="t2">&nbsp;</td>
                <td dir="rtl" width="50%"><span lang="fa">طلوع خورشید</span></td>
            </tr>
            <tr>
                <td align="center" id="zr">&nbsp;</td>
                <td dir="rtl" width="50%"><span lang="fa">اذان ظهر</span></td>
            </tr>
            <tr>
                <td align="center"  id="t3">&nbsp;</td>
                <td dir="rtl" width="50%"><span lang="fa">غروب خورشید</span></td>
            </tr>
            <tr>
                <td align="center"  id="t4">&nbsp;</td>
                <td dir="rtl" width="50%"><span lang="fa">اذان مغرب</span></td>
            </tr>
        </table>
        </td>
        </tr>
        <tr><td><br></td></tr>
        <tr>
        <td align="center"  width="55%">
        
        
        <table border=1 width="70%"><tr>
<form dir="rtl">
    <td>روز : <input id="day" type="text" name="T1" size="6" value="1" dir="ltr"></td> 
    <td>ماه : <select size="1" id="month" name="month">
    <option value="1" >فروردین</option>
    <option value="2">اردیبهشت</option>
    <option value="3">خرداد</option>
    <option value="4">تیر</option>
    <option value="5">مرداد</option>
    <option value="6">شهریور</option>
    <option value="7">مهر</option>
    <option value="8">آبان</option>
    <option value="9">آذر</option>
    <option value="10">دی</option>
    <option value="11">بهمن</option>
    <option value="12">اسفند</option>
    </select>
    </td>
    </tr><tr>
     <td>طول جغرافیایی : <input type="text" id="longitude" name="T2" size="7" dir="ltr" value="" disabled="true"></td> 
    <td>عرض جغرافیایی : <input type="text" id="latitude" name="T3" size="7" dir="ltr" value="" disabled="true"></td> 
    </tr><tr>
    <td colspan="2">مراکز استان : 
    <select id="cities" name="c" dir="rtl" onchange="coord()">
    <option>انتخاب کنید</option>
    <option>Berlin</option>
    
    <option>Frankfurt</option>
    <option>Hamburg</option>
    <option>Munich</option>
    
    </select></td>
    </tr>
    <tr>
    <td colspan="2" align="center">
    
    <input type="button" value="محاسبه" name="go" onclick="main();"></td>
</form>        
        </tr></table>
        
        </td>
    </tr>
</table>
 

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
40
محل سکونت
تهران-ونک-php-mysql
همين رو اخر استفاده كردم
9000 ثانيه كم كردم شد زمان المان
ولي php بود بهتر بود
مرسي
 

iroweb

کاربر تازه وارد
تاریخ عضویت
10 می 2007
نوشته‌ها
21
لایک‌ها
0
من ميتونم برات با php‏ بنويسم‎‏ كه همه جا كار كنه با توجه به اختلاف زماني . هزينه : 100 تومن . زمان 4 روز . بشتيباني دائمي

Email : admin‎@parsiteam.com
 

datomegasherly

کاربر تازه وارد
تاریخ عضویت
18 آگوست 2010
نوشته‌ها
1
لایک‌ها
1
سلام ،

من امروز این پست رو دیدم ... کد جاوا اسکریپتی که داده بودید رو به php تبدیل کردم ... امیدوارم به دردتون بخوره :

فقط بگم که تایم مربوط به berlin رو روی شهر خودم که اراک است تنظیم کردم . اگه اونو انتخاب کنید اوقات شرعی اراک رو میده ...

و این که فقط یه مشکل هست اونم به خاطر این که پی.اچ.پی تعداد اعشاری هایی که میخونه کمتر از تعداد اعشاری هایی است که جاوا اسکریپت میخونه ... و اون مشکل اینه که اذان ظهر چند ثانیه تفاوت زمانی داره ...

اینم کد اوقات شرعی به php :

PHP:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<?php

$m=$_POST['month'];
$d=$_POST['T1'];
$lg=$_POST['T2'];
$lat=$_POST['T3'];

//    var lg=52.5125;
//    var lat=29.635;
    $ep=sun($m,$d,4,$lg);
    $zr=$ep[0];
    $delta=$ep[1];
    $ha=loc2hor(108.0,$delta,$lat);
    $t1=Roundz($zr-$ha,24);
    $ep=sun($m,$d,$t1,$lg);
    $zr=$ep[0];
    $delta=$ep[1];
    $ha=loc2hor(108.0,$delta,$lat);
    $t1=Roundz($zr-$ha,24);
//
//   t2= Sun rise
//
    $ep=sun($m,$d,6,$lg);
    $zr=$ep[0];
    $delta=$ep[1];
    $ha=loc2hor(90.833,$delta,$lat);
    $t2=Roundz($zr-$ha,24);
    $ep=sun($m,$d,$t2,$lg);
    $zr=$ep[0];
    $delta=$ep[1];
    $ha=loc2hor(90.833,$delta,$lat);
    $t2=Roundz($zr-$ha,24);
//    
//    zr=Zohr
//
    $ep=sun($m,$d,12,$lg);
    $ep=sun($m,$d,$ep[0],$lg);
    $zr=$ep[0];
//
//   t2= Sun set
//
    $ep=sun($m,$d,18,$lg);
    $zr=$ep[0];
    $delta=$ep[1];
    $ha=loc2hor(90.833,$delta,$lat);
    $t3=Roundz($zr+$ha,24);
    $ep=sun($m,$d,$t3,$lg);
    $zr=$ep[0];
    $delta=$ep[1];
    $ha=loc2hor(90.833,$delta,$lat);
    $t3=Roundz($zr+$ha,24);
//
//   t2= Maghreb
//
    $ep=sun($m,$d,18.5,$lg);
    $zr=$ep[0];
    $delta=$ep[1];
    $ha=loc2hor(94.3,$delta,$lat);
    $t4=Roundz($zr+$ha,24);
    $ep=sun($m,$d,$t4,$lg);
    $zr=$ep[0];
    $delta=$ep[1];
    $ha=loc2hor(94.3,$delta,$lat);
    $t4=Roundz($zr+$ha,24);  

    
function sun($m,$d,$h,$lg)
{
if($m<7)
        $d=31*($m-1)+$d+($h/24);
    else
        $d=6+30*($m-1)+$d+$h/24;
    $M=74.2023+0.98560026*$d;
    $L=-2.75043+0.98564735*$d;
    $lst=8.3162159+0.065709824*floor($d)+1.00273791*24*($d-(int)$d)+$lg/15;
    $e=0.0167065;
    $omega=4.85131-0.052954*$d;
    $ep=23.4384717+0.00256*cosd($omega);
    $ed=180.0/pi()*$e;
    $u=$M;
    for($i=1;$i<=4;$i++) { $u=$u-($u-$ed*sind($u)-$M)/(1-$e*cosd($u)); }
    $v=2*atand(tand($u/2)*sqrt((1+$e)/(1-$e)));
    $theta=$L+$v-$M-0.00569-0.00479*sind($omega);
    $delta=asind(sind($ep)*sind($theta));
    $alpha=180.0/pi()*atan2(cosd($ep)*sind($theta),cosd($theta));
    if($alpha>=360)
        $alpha-=360;
    $ha=$lst-$alpha/15;
    $zr=Roundz($h-$ha,24);
    return(array($zr,$delta));
}

function sind($x){return(sin(pi()/180.0*$x));}
function cosd($x){return(cos(pi()/180.0*$x));}
function tand($x){return(tan(pi()/180.0*$x));}
function atand($x){return(atan($x)*180.0/pi());}
function asind($x){return(asin($x)*180.0/pi());}
function acosd($x){return(acos($x)*180.0/pi());}
function frac($x){return($x%1);}
function loc2hor($z,$d,$p){
    return(acosd((cosd($z)-sind($d)*sind($p))/cosd($d)/cosd($p))/15);
}

function Roundz($x,$a){
    $tmp=($x%$a)+($x-(int)$x);
    if($tmp<0)
        $tmp+=$a;
    return($tmp);
}

function hms($x)
{
    $x=floor(3600*$x);
    $h=floor($x/3600);
    $mp=$x-3600*$h;
    $m=floor($mp/60);
    $s=floor($mp-60*$m);
    $h++;
    return((($h<10)? "0" : "").$h.":".(($m<10)? "0" : "").$m.":".(($s<10)? "0" : "").$s);
}


?>
<script>
function init()
{
        lgs= [0,49.7,08.41,10.02,11.35];
        lats=[0,34.09,50.07,53.33,48.08];
}
function coord()
{
    var c=document.getElementById("cities");
    var i = c.selectedIndex;
    if(i==0)
    {
        document.getElementById("longitude").value="";
        document.getElementById("latitude").value="";
    }
    else
    {
        document.getElementById("longitude").value=lgs[i].toString()
        document.getElementById("latitude").value=lats[i].toString()
    }
}
</script>
<style>
<!--
body      { font-family: Tahoma;font-weight:normal; font-size: 12px}
td      { font-family: Tahoma;font-weight:normal; font-size: 12px}

-->
</style>
<body onload="init()" style="text-align: center">
<table  width="95%" class=table align="center">

    <tr>
        <td width="100%" align="center">
        <table border="1" width="60%" id="table3" dir="ltr">
            <tr>
                <td align="center" id="t1">&nbsp;<?php echo hms($t1); ?></td>
                <td dir="rtl" width="50%"><span lang="fa">اذان صبح</span></td>
            </tr>
            <tr>
                <td align="center" id="t2">&nbsp;<?php echo hms($t2); ?></td>
                <td dir="rtl" width="50%"><span lang="fa">طلوع خورشید</span></td>
            </tr>
            <tr>
                <td align="center" id="zr">&nbsp;<?php echo hms($zr); ?></td>
                <td dir="rtl" width="50%"><span lang="fa">اذان ظهر</span></td>
            </tr>
            <tr>
                <td align="center"  id="t3">&nbsp;<?php echo hms($t3); ?></td>
                <td dir="rtl" width="50%"><span lang="fa">غروب خورشید</span></td>
            </tr>
            <tr>
                <td align="center"  id="t4">&nbsp;<?php echo hms($t4); ?></td>
                <td dir="rtl" width="50%"><span lang="fa">اذان مغرب</span></td>
            </tr>
        </table>
        </td>
        </tr>
        <tr><td><br></td></tr>
        <tr>
        <td align="center"  width="55%">
        
        
        <table border=1 width="70%"><tr>
<form method="POST" action="date.php" dir="rtl">
    <td>روز : <input id="day" type="text" name="T1" size="6" value="1" dir="ltr"></td> 
    <td>ماه : <select size="1" id="month" name="month">
    <option value="1">فروردین</option>
    <option value="2">اردیبهشت</option>
    <option value="3">خرداد</option>
    <option value="4">تیر</option>
    <option value="5">مرداد</option>
    <option value="6">شهریور</option>
    <option value="7">مهر</option>
    <option value="8">آبان</option>
    <option value="9">آذر</option>
    <option value="10">دی</option>
    <option value="11">بهمن</option>
    <option value="12">اسفند</option>
    </select>
    </td>
    </tr><tr>
     <td>طول جغرافیایی : <input type="text" id="longitude" name="T2" size="7" dir="ltr" value=""></td> 
    <td>عرض جغرافیایی : <input type="text" id="latitude" name="T3" size="7" dir="ltr" value=""></td> 
    </tr><tr>
    <td colspan="2">مراکز استان : 
    <select id="cities" name="c" dir="rtl" onchange="coord()">
    <option>انتخاب کنید</option>
    <option>Berlin</option>
    
    <option>Frankfurt</option>
    <option>Hamburg</option>
    <option>Munich</option>
    
    </select></td>
    </tr>
    <tr>
    <td colspan="2" align="center">
    
    <input type="submit" value="محاسبه" name="go"></td>
</form>        
        </tr></table>
        
        </td>
    </tr>
</table>
 
Last edited:
بالا