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

تاريخ شمسي همراه با ايام هفته

kohyar

کاربر تازه وارد
تاریخ عضویت
5 آپریل 2007
نوشته‌ها
94
لایک‌ها
0
محل سکونت
تهران
سلام به همگي
من تو asp براي تبديل تاريخ ميلادي به شمسي از كد زير استفاده مي كنم كه فقط تاريخ شمسي رو ميده ولي ايام هفته رو مشخص نمي كنه
<script language="vbscript" runat="server">
Function IranDate()
Dim ifday,ifmonth,ifyear,ifdayofyear
Dim iyear,idayofyear
Dim inumdayofyear
Dim aifmonthdays
aifmonthdays = Array(31,31,31,31,31,31,30,30,30,30,30,29)
inumdayofyear = 365
iyear =year(date)
idayofyear = datepart("y",date)
If isleapyear(iyear-1) then
inumdayofyear = 366
aifmonthdays(11) = 30
End if
If (idayofyear > 79 ) then
ifyear = iyear -621
ifdayofyear = idayofyear - 79
Else
ifyear = iyear - 622
ifdayofyear = (inumdayofyear - 79 ) + idayofyear
End if
ifday = ifdayofyear
While ( ifday > aifmonthdays(ifmonth) )
ifday = ifday - aifmonthdays(ifmonth)
ifmonth = ifmonth + 1
Wend
ifmonth = ifmonth + 1
IranDate = ifyear & "/" & ifmonth & "/" & ifday
End Function
Function isleapyear(nyear)
isleapyear = ( ( (nyear mod 4) = 0 And (nyear mod 100) <> 0 ) or (nyear mod 400) = 0 )
End Function
Sub Showfdate
End sub
</script>
من اين كد را تست كردم درست جواب ميده
اگه ميشه لطف كنين و بهم بگين چه تغييري تو كد بدم تا ايام هفته رو هم به من بده
 

ma_christian

Registered User
تاریخ عضویت
25 ژانویه 2007
نوشته‌ها
368
لایک‌ها
2
محل سکونت
Tehran
با اجازه از دیگر دوستان ؛

این کد تاریخ را بهمراه نام ماه نشان می دهد. مثلا : امروز دوشنبه 20 خرداد 1386​

PHP:
<script language="vbscript" runat="server">
Month_days=array(0,31,59,90,120,151,181,212,242,272,303,333)
my_week_days=array("یکشنبه","دوشنبه","سه شنبه","چهار شنبه","پنج شنبه","جمعه","شنبه")
Months_name=array("فروردین","اردیبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند")
mdtn=day(now)+Month_days(month(now)-1)
my_week_day=my_week_days(weekday(now)-1)
  if mdtn>79 then
	my_1=mdtn-79
     if my_1<=186 then
        if (my_1 mod 31)=0 then
	 shamsi_day=31
	 shamsi_month=int(my_1/31)
	else
	 shamsi_day=(my_1 mod 31)
	 shamsi_month=int(my_1/31)+1
   end if
 else
  my_1=(my_1-186)
   if (my_1 mod 30)=0 then
     shamsi_day=30
       shamsi_month=int(my_1/30)+6
    else
     shamsi_day=(my_1 mod 30)
     shamsi_month=int(my_1/30)+7
    end if
  end if
 shamsi_year=year(now)-621
  else
  if ((year(now) mod 100)=0 and (year(now) mod 400)=0) or ((year(now) mod 100)<>0 and (year(now) mod 4)=0) then
   my_day_diff=11
    else
      my_day_diff=10
   end if
my_1=(mdtn+my_day_diff)/30
   if (my_1 mod 30)=0 then
       shamsi_day=30
       shamsi_month=int(my_1/30)+9
    else
  shamsi_day=(my_1 mod 30)
  shamsi_month=int(my_1/30)+10
 end if
shamsi_year=year(now)-622
end if
my_shamsi_month=Months_name(shamsi_month-1)
Persian_Date_String="امروز " & my_week_day&"، "& shamsi_day+1 & " " & my_shamsi_month & " " & shamsi_year
Response.Write Persian_Date_String
</script>

البته فکر می کنم بشود با استفاده از دستور CASE هم آن را اجرا کرد ولی خوب این هم بد نیست.​
 

kohyar

کاربر تازه وارد
تاریخ عضویت
5 آپریل 2007
نوشته‌ها
94
لایک‌ها
0
محل سکونت
تهران
سلام دوستان
كد تبديل تاريخ شمسي به ميلادي(سيستمي) رو مي خوام
ممنون ميشم
 

amin_lili

کاربر تازه وارد
تاریخ عضویت
24 آپریل 2007
نوشته‌ها
532
لایک‌ها
2
سن
44
محل سکونت
ای کاش آنجا ...
تبدیل شمسی به میلادی :

System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar();
DateTime d = pc.ToDateTime(1386, 4, 4, 0, 0, 0, 0);
TextBox1.Text = d.ToShortDateString();

تبدیل میلادی به شمسی :

public string GeorgianToPersian(DateTime date)
{
System.Globalization.PersianCalendar p = new System.Globalization.PersianCalendar();
int year = p.GetYear(date);
int month = p.GetMonth(date);
int day = p.GetDayOfMonth(date);
return (year.ToString() + "/" + (month > 9 ? month.ToString() : "0" + month.ToString()) + "/" + (day > 9 ? day.ToString() : "0" + day.ToString()));
}

کار میکنه بدون کوچکترین مشکل






.
 

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,298
لایک‌ها
17
سن
42
محل سکونت
North Pole
تبدیل شمسی به میلادی :

System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar();
DateTime d = pc.ToDateTime(1386, 4, 4, 0, 0, 0, 0);
TextBox1.Text = d.ToShortDateString();

تبدیل میلادی به شمسی :

public string GeorgianToPersian(DateTime date)
{
System.Globalization.PersianCalendar p = new System.Globalization.PersianCalendar();
int year = p.GetYear(date);
int month = p.GetMonth(date);
int day = p.GetDayOfMonth(date);
return (year.ToString() + "/" + (month > 9 ? month.ToString() : "0" + month.ToString()) + "/" + (day > 9 ? day.ToString() : "0" + day.ToString()));
}

کار میکنه بدون کوچکترین مشکل


.

محض گیج نشدن بقیه دوستان و آیندگان :
بله کار میکنه ولی فقط توی دات نت فریم ورک 2 به بالا یعنی asp.net 2 ! و اون کدی که اون بالاست و ایراد هم داره پست اول ! مختص تبدیل میلادی به شمسی توی Asp 3 یا کلاسیک اه !

ویرایش : راستی یادم رفت بگم فکر میکنم توی انجمن ++C الگوریتم درستش رو با رعایت سالهای کبیسه و اینا پیدا کنی .
 

_H2_

کاربر تازه وارد
تاریخ عضویت
27 می 2007
نوشته‌ها
35
لایک‌ها
0
سلام
بهترین کد همان کد کاربر amin_lili است که به هیچ چیز نیاز ندارد و در ASP.Net2 کار میکند و با عرض پوزش و شرمندگی از اساتید بزرگ!!!! ندیده و تست نکرده میگویم کلیه الگوریتم ها و dll های موجود ایراد دارند و اگر هم خیلی خیلی ردیف باشند و درست کارکنند صرفاً در محدودع یک بازه 33 ساله از شروع اولین کبیسه پنج ساله درست کار میکنند و الگوریتم اصلی و فوق العاده سریع و قطعی اینها نیست! بلکه باید تاریخ را به تعداد روز تبدیل کرد.
 

kohyar

کاربر تازه وارد
تاریخ عضویت
5 آپریل 2007
نوشته‌ها
94
لایک‌ها
0
محل سکونت
تهران
آقايون من واسه asp مي خوام
اگه كسي داره واسم بذاره
باي
 
بالا