نحوه استفاده از کلاس تبدیل تاریخ ؟

fahimehf

Member
سلام
من فقط درحد درست کردن منو و زیرمنو با فلش آشنایی دارم
میخوام گوشه ای از صفحم یه lable تاریخ بصورت زیر بااستفاده از فلش بذارم:
چهارشنبه 30 / 3 / 1386
20 جون 2007
کلاس تبدیل تاریخ میلادی به شمسی دارم چطور باید از اون استفاده کنم:
http://forum.majidonline.com/showthread.php?t=59961&highlight=تاریخ+شمسی+میلادی
اگه میشه لطف کنید و من راهنمایی کنید_ تشکر
 

Nasab187

Member
اول بايد يك نمونه از اين كلاس درست كنيد :
PHP:
var classInstance:Shamsi=new Shamsi();

بعدش براي تبديل سالها ميتونيد از دو تا متدش استفاده كنيد .
براي تبديل تاريخ ميلادي به شمسي :
PHP:
tarikh_e_shamsi= classInstance.MiladiToShamsi(saal miladi ra vared konid, adad e mah miladi, rooz miladi);
اين متد يه آرايه بر مي گردونه كه شامل سال و روز و ماه شمسي هستش .
براي دسترسي به اينها بايد به اين ترتيب عمل كرد :
PHP:
sal_e_shamsi=tarikh_e_shamsi[0];
mah_e_shamsi=tarikh_e_shamsi[1];
rooz_e_shamsi=tarikh_e_shamsi[2];
براي برعكسش هم همينجوريه . فقط فراموش نشه كه متن كلاس رو توي فايل AS و كنار فايل Swf تون ذخيره كنيد .
البته استفاده از كلاس براي اين كار ( تبديل تاريخها) كار درستي نيست . به نظرم كار اضافه است و دو تا تابع هم ميتونند همين كار رو انجام بدن .
پس روش ساده تر و بهتر اينه كه تابعهاي به كار رفته در كلاس رو يه جايي توي فايل تون كپي كنيد و ازشون استفاده كنيد .
 
آخرین ویرایش:

fahimehf

Member
البته گفتم که من آشنایی زیادی با فلش ندارم .
اگه لطف کنید در سطح مبتدی توضیح بدید خیلی خوبه.
درهر صورت ممنون
 

shirini_forush

Well-Known Member
نمونه ی سامان جان رو خیلی بهش دقت نکردم.
ولی این کامله و دقیق ترین الگوریتم رو داره (الگوریتم های زیادی برای تبدیل جلالی به گرگورین و بالعکس هست که همشون خطا دارن):
PHP:
g_days_in_month = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
j_days_in_month = new Array(31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29);

g_months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
j_months = new Array("فروردين","ارديبهشت","خرداد","تير","مرداد","شهريور","مهر","آبان","آذر","دي","بهمن","اسفند");

g_days = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
j_days = new Array("شنبه","يكشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه");

function div(a,b)
{
	return Math.floor(a/b);
}

function gregorian_to_jalali(g)
{
	var gy, gm, gd;
	var jy, jm, jd;
	var g_day_no, j_day_no;
	var j_np;
	var i;
	
	gy = g[0]-1600;
	gm = g[1]-1;
	gd = g[2]-1;
	
	g_day_no = 365*gy+div((gy+3),4)-div((gy+99),100)+div((gy+399),400);
	
	for (i=0;i<gm;++i)
		g_day_no += g_days_in_month[i];
		
	if (gm>1 && ((gy%4==0 && gy%100!=0) || (gy%400==0)))
		++g_day_no;
		
	g_day_no += gd;
	
	j_day_no = g_day_no-79;
	
	j_np = div(j_day_no, 12053);
	j_day_no %= 12053;
	
	jy = 979+33*j_np+4*div(j_day_no,1461);
	j_day_no %= 1461;
	
	if (j_day_no >= 366)
	{
		jy += div((j_day_no-1),365);
		j_day_no = (j_day_no-1)%365;
	}
	
	for (i = 0; i < 11 && j_day_no >= j_days_in_month[i]; ++i)
	{
		j_day_no -= j_days_in_month[i];
	}
	jm = i+1;
	jd = j_day_no+1;
	
	return new Array(jy, jm, jd);
}

function jalali_to_gregorian(j)
{
	var gy, gm, gd;
	var jy, jm, jd;
	var g_day_no, j_day_no;
	var leap;
	var i;
	
	jy = j[0]-979;
	jm = j[1]-1;
	jd = j[2]-1;
	
	j_day_no = 365*jy + div(jy,33)*8 + div((jy%33+3),4);
	
	for (i=0; i < jm; ++i)
		j_day_no += j_days_in_month[i];
	
	j_day_no += jd;
	
	g_day_no = j_day_no+79;
	
	gy = 1600 + 400*div(g_day_no,146097);
	g_day_no = g_day_no % 146097;
	
	leap = 1;
	
	if (g_day_no >= 36525)
	{
		g_day_no--;
		gy += 100*div(g_day_no,36524);
		g_day_no = g_day_no % 36524;
		
		if (g_day_no >= 365)
			g_day_no++;
		else
			leap = 0;
	}
	
	gy += 4*div(g_day_no,1461);
	g_day_no %= 1461;
	
	if (g_day_no >= 366) {
		leap = 0;
		
		g_day_no--;
		gy += div(g_day_no, 365);
		g_day_no = g_day_no % 365;
	}
	
	for (i = 0; g_day_no >= g_days_in_month[i] + (i == 1 && leap); i++)
		g_day_no -= g_days_in_month[i] + (i == 1 && leap);
		
	gm = i+1;
	gd = g_day_no+1;
	
	return new Array(gy, gm, gd);
}

function S_J_G(a)
{
	b = jalali_to_gregorian(a);
	return b[2] + " " + g_months[b[1]] + " " + b[0];
}

function S_G_J(a)
{
	b = gregorian_to_jalali(a);
	return b[2] + " " + j_months[b[1]-1] + " " + b[0];
}

function STD_J() {
	Today = new Date();
	j = S_G_J(new Array(Today.getFullYear(),Today.getMonth()+1,Today.getDate()));
	return j;
}

function STD_G() {
	Today = new Date();
	j = new Array(Today.getFullYear(),Today.getMonth(),Today.getDate());
	return j[2] + " " + g_months[j[1]] + " " + j[0];
}

function jalali_today() {
	Today = new Date();
	j = gregorian_to_jalali(new Array(Today.getFullYear(),Today.getMonth()+1,Today.getDate()));
	return j[2]+"/"+j[1]+"/"+j[0];
}

و میتونید برای استفاده اینا رو تست کنید:

PHP:
trace(S_J_G(new Array(1368,7,15)));
a.text = STD_J();

سوال دیگه ای بود بفرمایید.
 
سفير جان كاش يه فايل مي ساختي و اينجا ميذاشتي كه قطعا ازش جواب بگيريم . بازم از كمك هات ممنون
 
بازم سلام ... توي اين نمونه اي كه گذاشتين از چپ به راست تاريخ رو مينويسه و روزهاي هفته رو هم نداره ... چنين امكاني رو من قبلا توي يه فايل فلش ديده بودم ... اگه اينا رو هم توضيح بدين عالي ميشه :)
 

shirini_forush

Well-Known Member
همه چی داره عزیزم.
دیگه نمیشه که من لقمه رو بجوم بذارم تو دهن شما :دی
rtl و ltr هم ربطی به js نداره باید تو خروجی تون تنظیم بشه. آرایه ی روز های هفته هم هست.
thanks ه قبلیا رو هم هنوز نزدی که سوال جدید میکنی :پی

شاد باشی
 
عذر میخوام اگه بهتون بر خورده . من قصد ندارم شما رو توی زحمت بندازم . گفتم اگه ممکنه . . . در هر حال ازتون بخاطر راهنمایی های که میکنید تشکر میکنم .
 

shirini_forush

Well-Known Member
نه گرامی. چرا بربخوره؟!
پست هایی که من میزنم رو کلا با لحن دوستانه بخونید. من هیچ وقت پستای تند نمیزنم :wink:
تو ضیحات رو هم که اجمالی دادم. اگر سوال دارید بفرمایید.
 
من با فلش کارهای مولتی مدیا انجام میدم برای همین هم سوالات زیادی میپرسم چون چیز زیادی از اکشن اسکریپت نمیدونم. چیزهایی زیادی از این انجمن یاد گرفتم و اینو مرهون زحمات شما هستم . امیدوارم موفق باشید . اگر هم پرسیدم بخاطر این بود که نمونه شما واقعا ایام هفته رو نمایش نمیده در حالی که دیدم توی کد ها ایام هفته بود ولی در خروجی نشون نمیداد . بعدش هم هر هرکاری کردم که بتونم چیدمان نوشته های خروجی رو درست کنم نتونستم . اصراری به پاسخ گویی شما ندارم ... گفتم که ... اگه براتون زحمت نیست !!!
 

shirini_forush

Well-Known Member
مشکلی نیست. شما دقیقا بگو میخواید تو چه محیطی جواب بگیری (فلش یا Html یا...) و فرمتش رو هم بگو. مثلا:
دوشنبه 23 خرداد 1386
یا... من اگر بتونم کمک میکنم.

شاد باشید
 
نهایاتا از فایل هام خروجی swf میگیرم . . .
به همین صورتی که گفتید کارم راه می افته :
دوشنبه 23 خرداد 1386

.... بازم ممنون
 
آخرین ویرایش:
بازم سلام ... پس ما منتظر نباشيم ديگه ... سفير جان خواستم از زحمتهايي كه ميكشيد يه بار ديگه تشكر كنم . موفق باشيد.
 

shirini_forush

Well-Known Member
سلام حمید جان
شرمنده من به کلی یادم رفت. بفرما. این تابع رو اضافه کن و هر جا خواستی صداش کن:
PHP:
function LTR_S_G_J()
{
	Today = new Date();
	day = Today.getDay();
    b = gregorian_to_jalali(new Array(Today.getFullYear(),Today.getMonth()+1,Today.getDate()));
    return j_days[day]+" "+b[2]+" "+j_months[b[1]-1] + " " + b[0];
}
 
ممنون از اينكه زحمت ميكشي و جواب ميدي . ولي متاسفانه نميتونم ازش جواب بگيرم . ظاهرا ديگه بايد بي خيالش بشم . ممنون .... :)
 
من كاملا شرمنده شما شدم .... از بس كه توي زحمت افتاديد . . . من هر كار ميكنم همونطوري كه بود هست . :cry:
 

جدیدترین ارسال ها

بالا