مقدمه ای برای سایت یک datachoser شمسی

kiarash.M

Active Member

i1d1l5.jpg




اول سلام .

تا حالا چند تا تاپیک داشتیم که
یه چیزی مثل datachoser component برای تاریخ شمسی چرا نسیت ؟؟
آیا میشه ساخت ؟؟
حتما خیلی سخه !!
باید همه تاریخ ها رو وارد کرد ؟؟


سعی میکنم اینجا شه آموزشی بدم ..
برای این کار راهترین روش اینه که مثل خودمون عمل کنیم .. یعنی اگه بدونیم امروش شنبه 30 ام .. میدونم که دیروش جمعه 29 بوده و فردا 31 امه ( چوش 6 ماه اوله ساله) و بعدش 1 ام ماه بدیه ...

برای این کار از کلاس تاریخی که قبلا ساخته بودم استفدت میکنیم ، فقط یه function بهش اضافه میکنیم
PHP:
function today():Number {
		var date1 = new Date();
		var date4 = new kiafilmClasses.date();
		var date2 = date4.MiladiToShamsi(date1.getFullYear(), date1.getMonth()+1, date1.getDate());
		var getD:Number;
		switch (date1.getDay()) {
			case 0 :
				getD = 1;
				break;
			case 1 :
				getD = 2;
				
				break;
			case 2 :
				getD = 3;
				break;
			case 3 :
				getD = 4;
				break;
			case 4 :
				getD = 5;
				break;
			case 5 :
				getD = 6;
				break;
			case 6 :
				getD = 0;
				break;
		}
		return (new Number(getD));
	}

این function فقط یه ما میگه که امروز چند شنبه است .. (البته به معیار ماها که شنبه اول هفته هست)
بازم میگم این فانکشن تاریخ شمسی روز رو هم برمیکردونه که من فقط اینجا return رو برای روز هفته میخوام که برای میلادی و شمسی ، هیچ فرقی نمیکنه و لازم به convert نیست .


مرحله بعدی بازی با روزاست :



PHP:
import kiafilmClasses.especial.especial;
class kiafilmClasses.dateSorter {


	function setThisDate():Number {


		var dDate:especial = new especial();
		var thisDay:Number = dDate.today();

		_root["day"+thisDay].text = dDate.today2();

		var thisFDate:Array = dDate.today2();
		for (var i = (thisDay+1); i<7; i++) {
			if(thisFDate[1]<7 && thisFDate[2]>=31){
				thisFDate[2] = 0;
				thisFDate[1]++;
			}
			if(thisFDate[1]>=7 && thisFDate[2]>=30){
				thisFDate[2] = 0;
				thisFDate[1]++;
				if (thisFDate[1]>12) {
					thisFDate[1] = 0;
					thisFDate[0]++;
				}
			}
				
			thisFDate[2]++;
			if (thisFDate[1] == 12 && thisFDate[2] == 31) {
				thisFDate[2] = 1;
				thisFDate[1]++;
			}
			_root["day"+i].text = thisFDate[0]+","+thisFDate[1]+","+Number(thisFDate[2]);
		}
		var thisFDate2:Array = dDate.today2();
		for (var i = (thisDay-1); i>=0; i--) {

			if (thisFDate2[2]<=1) {
				thisFDate2[2] = 32;
				thisFDate2[1]--;
			}
			thisFDate2[2]--;
			_root["day"+i].text = thisFDate2[0]+","+thisFDate2[1]+","+Number(thisFDate2[2]);
		}
		return new Number(thisDay);
	}
}

ابن مثال کامل نیست و فقط برای 7 روز کار مینه البته تا همیشه
با زیاد کردن limite حلقه و چند تا if دیگه میشه یه تقویم کامل به این روش درست کرد ..
 
بالا