PDA

View Full Version : محاسبه چندمین جمعه در ماه برای نماز جمعه



$ M 3 H R D A D $
جمعه 07 مهر 1391, 14:19 عصر
سلام
تاریخ نماز جمعه وارد میشه
می خوام بدونم این روز که همیشه جمعه است جندمین جمعه ماه است ؟
می خوام آرشیو خطبه ها را درست کنم بنویسم
هفته اول اردیبهشت
هفته دوم اردیبهشت
از تابع جلالی و اینا استفاده می کنم
لطفا راهنمایی کنید

iner30
جمعه 07 مهر 1391, 14:34 عصر
خب وقتی تاریخ رو داری و روز رو هم داری ،از روز ماه که جمعه هم هست چند بار 7 کم کن تا جایی که منفی بشه ، وقتی منفی شد ، تعداد دفعاتی که عمل کم شدن انجام شده میشه چندمین جمعه اون ماه

Amir_Developer
جمعه 07 مهر 1391, 14:35 عصر
باید بررسی کنه اگه تاریخ وارد شده تو هر بازه زیر بود مشخص کنه چندمین جمعست:

اگر بین اول تا هفتم بود جمعه اول
اگر بین هشتم تا 14 بود جمعه دوم
اگه بین 15 تا 21 بود جمعه سوم
در غیر اینصورت اگر بین 22 تا 31 جمعه چهارم

$ M 3 H R D A D $
جمعه 07 مهر 1391, 15:33 عصر
خب وقتی تاریخ رو داری و روز رو هم داری ،از روز ماه که جمعه هم هست چند بار 7 کم کن تا جایی که منفی بشه ، وقتی منفی شد ، تعداد دفعاتی که عمل کم شدن انجام شده میشه چندمین جمعه اون ماه
30
31
29
این روزا رو اینکار کنم هفته 5 میشه

$ M 3 H R D A D $
جمعه 07 مهر 1391, 15:53 عصر
باید بررسی کنه اگه تاریخ وارد شده تو هر بازه زیر بود مشخص کنه چندمین جمعست:

اگر بین اول تا هفتم بود جمعه اول
اگر بین هشتم تا 14 بود جمعه دوم
اگه بین 15 تا 21 بود جمعه سوم
در غیر اینصورت اگر بین 22 تا 31 جمعه چهارم

1 تا 7 هفته اول
8 تا 14 هفته دوم
15 تا 21 هفته سوم
22 تا 29 هفته چهارم
30 و 31 چی ؟
جمعه 30 شهرویور
اگه 30 باشه روزما :
31 باشه : 24 جمعه و 17 و 10 و 3 ( هفته چ - ف 3 - ه 2 - ه 1

30 جمعه - 23 جمعه - 16 جمعه - 9 جمعه - 2 جمعه

29 باشه : 22 و 15 و 8 و 1

28 باشه : 21 و 14 و 7 و 30 یا 31

27 باشه : 20 و 13و6 و29 یا 30
26 باشه : 19 و 12 و 5 و 28 یا 29
25 باشه : 18 و 11و4و27 یا 28
24 باشه : 17و10و3و26 یا 27
23 باشه : 16 و 9 و 2 و 25 یا 26
22 باشه : 15 و 8 و 1و24 یا 25
21 باشه : 14و7و31 یا 30 و 23 یا 24
20 باشه : 13 و 6 و 30 یا 29 و 22 یا 23
19 باشه : 12 و 5 و 29 یا 28 و 21 یا 22
18 باشه : 11 و 4 و 28 یا 27 و 20 یا 21
17 باشه : 10 و 3و 27 یا 26 و 19 یا 20
16 باشه : 9 و 2 و 26 یا 25 و 18 یا 19
15 باشه : 8 و 1 و 25 یا 24 و 17 یا 18
14 باشه : 7 و 31 یا 30 و 24 یا 23 و 16 یا 17
13 باشه : 6 و 30 یا 29 و 23 یا 22 و 15 یا 16
12 باشه : 5 و 29 یا 28 و 22 یا 23 و 14 یا 15
11 باشه : 4 و 28 یا 27 و 21 یا 22 و 13 یا 14
10 باشه : 3 و 27 یا 26 و 20 یا 21 و 12 یا 13
9 باشه : 2 و 26 یا 25 و 19 یا 20 و 11 یا 12
8 باشه : 1 و 25 یا 24 و 18 یا 19 و 10 یا 11
7 باشه : 31 یا 30 و 24 یا 23 و 17 یا 18 و 9 یا 10
6 باشه : 30 یا 29 و 23 یا 22 و 16 یا 17 و 8 یا 9
5 باشه : 29 یا 28 و 22 یا 21 و 15 یا 16 و 7 یا 8
4 باشه : 28 یا 27 و 21 یا 20 و 14 یا 15 و 6 یا 7
3 باشه : 27 یا 26 و 20 یا 19 و 13 یا 14 و 5 یا 6
2 باشه : 26 یا 25 و 19 یا 18 و 12 یا 13 و 4 یا 5
1 باشه : 25 یا 24 و 18 یا 17 و 11 یا 12 و 3 یا 4

تازه 29 ام اسفند هم هست
سخته فک نکنم به همین راحتی که میگید باشه

$ M 3 H R D A D $
جمعه 07 مهر 1391, 15:57 عصر
1 باشه یعتی یکم خودش جمعست همون هفته اول یا چهار اگه برگردیم عقب میشه 25 یا 24 هفته 3 اگه بریم جلو میشه هفته یک ماه بعد
تو هر خط 5 تا هفته گفتم که یکیش مال ماه قبله یا شایدم مال ماه بعد

اگه 1 باشه یعنی جمعه ما روز 1 ماه هستش و احتمالاتش و نوشتم
کمک لطفا
شماره این آقایی که تقویم جلالی و نوشت و ندارید؟

Amir_Developer
جمعه 07 مهر 1391, 16:52 عصر
خوب میشه ار یک حلقه استفاده کرد:

for(int i=1;tarikh>0;i++)
tarikh-=7;


منظور از تاریخ همان روز ورودی است.
مقدار(i-1) هم همان خروجی است که شما لازم دارید.

iner30
جمعه 07 مهر 1391, 17:02 عصر
خب مگه یک ماه میتونه 5 تا جمعه داشته باشه؟!!!
مثلا اگه اول شهریور ماه جمعه باشه ، میخوایین بزنین هفته آخر مرداد یا هفته اول شهریور؟

Amir_Developer
جمعه 07 مهر 1391, 17:23 عصر
خب مگه یک ماه میتونه 5 تا جمعه داشته باشه؟!!!
مثلا اگه اول شهریور ماه جمعه باشه ، میخوایین بزنین هفته آخر مرداد یا هفته اول شهریور؟

خوب اگه اول شهریور جمعه باشه همون ابتدا حلقه با مقدار i=2 تمام میشه و جواب شما i-1=1 خواهد بود.

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

Amir_Developer
جمعه 07 مهر 1391, 17:27 عصر
خب مگه یک ماه میتونه 5 تا جمعه داشته باشه؟!!!
مثلا اگه اول شهریور ماه جمعه باشه ، میخوایین بزنین هفته آخر مرداد یا هفته اول شهریور؟

یک ماه حداکثر 31 روزه یعنی 31 تقسیم بر 7 مقدار صحیح 4 میده یعنی هر روز حداقل 4 بار در ماه تکرار میشه و قاعدتا 3 روز باقی مانده دفعه 5 امشون خواهد بود.

MMSHFE
جمعه 07 مهر 1391, 17:38 عصر
این کد رو امتحان کنید:


function WhichFriday($date = NULL) {
require_once 'jdf.php';
date_default_timezone_set('Asia/Tehran');
if(!$date) {
$date = jdate('Y/m/d');
}
list($year, $month, $day) = explode('/', $date);
$timestamp = jmktime(0, 0, 0, $month, $day, $year);
unset($date, $year, $month, $day);
$w = tr_num(jdate('w', $timestamp));
if($w != 6) {
return '<p>روز مشخص شده، جمعه نیست</p>' . PHP_EOL;
}
list($j, $f) = explode(',', tr_num(jdate('j,F', $timestamp)));
unset($timestamp);
$result = 'هفته ';
if($j < 8) {
$result .= 'اول ';
}
elseif($j < 15) {
$result .= 'دوم ';
}
elseif($j < 22) {
$result .= 'سوم ';
}
elseif($j < 29) {
$result .= 'چهارم ';
}
else {
$result .= 'پنجم ';
}
$result .= $f;
return $result;
}
امیدوارم مشکلتون رو رفع کنه.

$ M 3 H R D A D $
جمعه 07 مهر 1391, 20:52 عصر
ممنون از پاسخ دوستان چک می کنم

$ M 3 H R D A D $
جمعه 07 مهر 1391, 21:16 عصر
آقا مصطفی میشه یک مقال بزنید ؟
ساب باید 1391 باشه یا 91 ؟
1391/02/08
با این تست کردم میگه جمعه نیسه
بیشتر تاریخ هارو می گه نیست

$ M 3 H R D A D $
جمعه 07 مهر 1391, 21:26 عصر
2012-04-27
تاریخ تو بانک من به این صورته :
08/02/1391
تبدیل به میلادی کردم :
2012-04-27

تو تابع شما هم explode و به - تبدیل کردم تا مشکل نباشه
اما بازم میگه جمعه نیست
jdf.php خودتونو پیوست کنید لطفا
ربطی به این داره که امسال کبیسه است ؟

$ M 3 H R D A D $
شنبه 08 مهر 1391, 11:01 صبح
لطفا ج بدید من مشکلم هنوز رفع نشده ممنون میشم ج بدید

MMSHFE
دوشنبه 10 مهر 1391, 21:10 عصر
خط 11 رو اینطوری تغییر بدین:

$w = tr_num(jdate('w', $timestamp));
خط 15 رو هم اینطوری:

list($j, $f) = explode(',', tr_num(jdate('j,F', $timestamp)));
یه ایراد جزئی توی محاسبه روزها هم بود که درنهایت کد اصلاح شد و توی همون پاسخ کد نهایی که درست کار میکنه رو گذاشتم. موفق باشید.