تبديل تاريخ از ميلادي به شمسي

سلام
يه كد مي خوام كه تاريخ رو از كامپيوتر بگيره و اون رو به هجري شمسي تبديل كنه
و نيز براي دراز مدت هم خوب كار كنه
يعني سال كبيسه و ....
ماه ها و روز ها به فارسي باشن البته خودم تونستم روز ها رو به فارسي برگردونم ولي سال و ماه رو نه
ممنون ميشم لطف كنيد
 

<3pehr>

Active Member
سلام
من يه نمونه دارم اما اوني كه شما مي خواهين نيست يعني مشكل داره مثلا پارسال درست بود اما الان كه آزمايش كردم 1 روز عقبه. :lol: :lol:
به هر حال اگه خواستين بگين تا براتون بفرستم.




سپهر
 

amir_s

Active Member
شما بايد الگوريتم تبديل رو بلد باشيد
تبديل كاري نداره
 

<3pehr>

Active Member
امير جان ميشه الگوريتم اين كار رو بذاري ممنون مي شم.



سپهر
 

naeim_crack

Active Member
سلام

سلام
شما می تونی از کد زیر استفاده کنید
[
کد:
var today = new Date();
dm = today.getDate();
mm = today.getMonth()+1;
ym = today.getFullYear();
var d = new Array(20, 19, 20, 20, 21, 21, 22, 22, 22, 22, 21, 21);
var p = new Array(11, 12, 10, 12, 11, 11, 10, 10, 10, 9, 10, 10);
var w =new Array("يکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه") ;
var mon = new Array("فروردين", "ارديبهشت", "خرداد", "تير", "مرداد", "شهريور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند") ;

var u = 0;
var rp = 0;
if (ym%4 == 0) {
	u = 1;
}
// end if
if (ym%100 == 0 &amp;&amp; ym%400 != 0) {
	u = 0;
}
// end if
var ys = ym-622;
var x = ys-22;
x = x%33;
if (x%4 == 0 &amp;&amp; x != 32) {
	rp = 1;
}
// end if
var i = rp-2 == 0 ? 1 : 0;
i = i+(u-2 == 0 ? 1 : 0);
i = i*2;
x = 0;
if (i == 0 &amp;&amp; mm == 3) {
	x = 1;
}
// end if
if (i == 0) {
	i = 3;
}
// end if
var ms = (9+mm)%13;
if (ms&lt;10) {
	ms = ms+1;
}
// end if
var d1 = d[mm-1];
if (i == 1 &amp;&amp; mm>2) {
	d1 = d1-1;
}
// end if
if (i == 2 &amp;&amp; mm&lt;3) {
	d1 = d1-1;
}
// end if
var p1 = p[mm-1];
if (i == 1 &amp;&amp; mm>2) {
	p1 = p1+1;
}
// end if
if (i == 2 &amp;&amp; mm&lt;4) {
	p1 = p1+1;
}
// end if
if (dm>0 &amp;&amp; dm&lt;=d1) {
	var ds = p1+dm+x-1;
	x = 1;
} else {
	var ds = dm-d1;
	ms = ms+1;
	if (ms == 13) {
		ms = 1;
	}
	// end if
	x = 2;
}
// end if
if (mm == 3 &amp;&amp; x == 2 || mm>3) {
	ys = ys+1;
}
// end if
output = ys+" "+w[today.getDay()] + " " +ds + " " +mon[ms-1];
حالا می نونید تابع output رو هر جا که خواستی استفاده کنید
 

<3pehr>

Active Member
سلام
آقا نعيم اينكه مثل اوني كه من دارم يه روز عقبه!!!!!





سپهر
 

naeim_crack

Active Member
سلام

سلام من خودم از این استفاده می کنم فکر نکنم یک روز عقب باشه در ضمن عزیز دل من یک روز دو روز چیزی نیست که :lol:

حالا فعلا می تونید از این کام÷.ننت استفاده کنید تا اون یکی رو درستش کنم
موفق باشید
 

پیوست ها

  • date-component_190.zip
    4 کیلوبایت · بازدیدها: 89

amir_s

Active Member
سلام
براي اينكه عقب نمونه كه كاري نداره از اين كد استفاده كنيد :

کد:
var today = new Date(); 
dm = today.getDate(); 
mm = today.getMonth()+1; 
ym = today.getFullYear(); 
var d = new Array(20, 19, 20, 20, 21, 21, 22, 22, 22, 22, 21, 21); 
var p = new Array(11, 12, 10, 12, 11, 11, 10, 10, 10, 9, 10, 10); 
var w =new Array("يکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه") ; 
var mon = new Array("فروردين", "ارديبهشت", "خرداد", "تير", "مرداد", "شهريور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند") ; 

var u = 0; 
var rp = 0; 
if (ym%4 == 0) { 
   u = 1; 
} 
// end if 
if (ym%100 == 0 &amp;&amp; ym%400 != 0) { 
   u = 0; 
} 
// end if 
var ys = ym-622; 
var x = ys-22; 
x = x%33; 
if (x%4 == 0 &amp;&amp; x != 32) { 
   rp = 1; 
} 
// end if 
var i = rp-2 == 0 ? 1 : 0; 
i = i+(u-2 == 0 ? 1 : 0); 
i = i*2; 
x = 0; 
if (i == 0 &amp;&amp; mm == 3) { 
   x = 1; 
} 
// end if 
if (i == 0) { 
   i = 3; 
} 
// end if 
var ms = (9+mm)%13; 
if (ms&lt;10) { 
   ms = ms+1; 
} 
// end if 
var d1 = d[mm-1]; 
if (i == 1 &amp;&amp; mm>2) { 
   d1 = d1-1; 
} 
// end if 
if (i == 2 &amp;&amp; mm&lt;3) { 
   d1 = d1-1; 
} 
// end if 
var p1 = p[mm-1]; 
if (i == 1 &amp;&amp; mm>2) { 
   p1 = p1+1; 
} 
// end if 
if (i == 2 &amp;&amp; mm&lt;4) { 
   p1 = p1+1; 
} 
// end if 
if (dm>0 &amp;&amp; dm&lt;=d1) { 
   var ds = p1+dm+x-1; 
   x = 1; 
} else { 
   var ds = dm-d1+1; 
   ms = ms+1; 
   if (ms == 13) { 
      ms = 1; 
   } 
   // end if 
   x = 2; 
} 
// end if 
if (mm == 3 &amp;&amp; x == 2 || mm>3) { 
   ys = ys+1; 
} 
// end if 
output = ys+"     "+w[today.getDay()] + "    " +ds + "  " +mon[ms-1];
 

naeim_crack

Active Member
امیر خان شما نو این کدی تغییر ایجاد کردین یا همنیه که من اون بالا گذاشتم
 

<3pehr>

Active Member
سلام
آقا نعيم شرمنده اين كامپوننتي كه گذاشتين هم يه روز عقبه


سپهر
 

amir_s

Active Member
naeim_crack گفت:
ایول فقط با این تغییر سال ماه روز رو در ماهای بعدی به هم نمیریزه

يه اشتباهي شده
به هم ميريزه !!! مثلا تاريخ از دوم شروع ميشه !!!
كسي راه حلي سراغ نداره :oops:
 

naeim_crack

Active Member
من اینو می دونسم اگه کسی یک الگوریتم کامل از تاریخ داره و با محاسبه سال کبیسه اینجا بزاره تا از رو اون یه کامپوننت تاریخ شمسی درست حسابی برای فلش درست کنیم
 

amir_s

Active Member
naeim_crack گفت:
من اینو می دونسم اگه کسی یک الگوریتم کامل از تاریخ داره و با محاسبه سال کبیسه اینجا بزاره تا از رو اون یه کامپوننت تاریخ شمسی درست حسابی برای فلش درست کنیم
آره فكر خوبيه
نميشه همين تاريخ رو يه كاري كنيم كه يه روز جلوتر رو نشون بده ؟؟؟
البته فكر ميكنم اين الگوريتم ماههارو از 29 روز حساب ميكنه
 

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

بالا