کد تاریخ شمسی

ghasembaghi

Member
من قبلا برای درج تاریخ شمسی امروز در سایت از کد زیر استفاده میکردم، منتها این کد بعضی وقت ها توی بازی می رفت و تاریخ روز، هفته، ماه یا سال را یکی کم یا زیاد نشون میداد. مشکل دیگشم این بود که بر اساس تاریخ کامپیوتر کلاینت تنظیم می شد نه سرور.میخواستم ببینم کد دیگه ای برای نمایش تاریخ امروز به صورت شمسی هست یا نه؟ ممنون از همه

کد قبلی:
<script>
function showdate()
{
week= new Array("يكشنبه","دوشنبه","سه شنبه","چهارشنبه","پنج شنبه","جمعه","شنبه")
months = new Array("فروردين","ارديبهشت","خرداد","تير","مرداد","شهريور","مهر","آبان","آذر","دي","بهمن","اسفند");
a= new Date();
d= a.getDay();
day= a.getDate();
month= a.getMonth()+1;
year= a.getYear();
year= (year== 0)?2000:year;
(year<1000)? (year += 2000):true;
year -= ( (month < 3) || ((month == 3) && (day < 21)) )? 622:621;
switch (month) {
case 1: (day<21)? (month=10, day+=10):(month=11, day-=20); break;
case 2: (day<20)? (month=11, day+=11):(month=12, day-=19); break;
case 3: (day<21)? (month=12, day+=9):(month=1, day-=20); break;
case 4: (day<21)? (month=1, day+=11):(month=2, day-=20); break;
case 5:
case 6: (day<22)? (month-=3, day+=10):(month-=2, day-=21); break;
case 7:
case 8:
case 9: (day<23)? (month-=3, day+=9):(month-=2, day-=22); break;
case 10:(day<23)? (month=7, day+=8):(month=8, day-=22); break;
case 11:
case 12:(day<22)? (month-=3, day+=9):(month-=2, day-=21); break;
default: break;
}
document.write(" "+week[d]+" "+day+" "+months[month-1]+" "+ year);
}
</script>
 

Mr.Steres

Active Member
از همه بهتر همینه ! البته امسال ایام هفته رو یه ذره عقب جلو نشون میده !
 

Zanguei

Member
دوستان عزیزم
اول از همه اینکه کد شما به زبان جاوا اسکریپت است که جزء زبانهای Ciient Side محسوب میشه و شما این تاپیک رو در انجمن Server Side باز کردید و دوم اینکه همانطور که شاره کردید زبان جاوا اسکریپت برای نمایش تاریخ از تاریخ سیستم کاربرانی که سایت رو مشاهده می کنند استفاده می کنه بنابراین اگر تاریخ کامپیوتر کاربر اشتباه باشه سایت شما هم تاریخ اشتباهی رو نمایش خواهد داد و این کمی باعث ضعف است و ممکنه که موجبات تمسخر طراح سایت و یا مالک سایت رو به ارمغان بیارید. برای جلوگیری از این کار باید تاریخ را توسط زبان های سرور سایدی مثل PHP و یا ASP.NET از سرور بگیرید. چرا که معمولا تاریخ و ساعت سرورها با تاریخ و ساعت گرینویچ تنظیم میشوند.
نمونه کد PHP رو میتونید در تاپیک زیر پیدا کنید.
http://forum.majidonline.com/showthread.php?p=631259
موفق باشید.
 
آخرین ویرایش:

pedramr

Active Member
تا به حال الگوريتم‌های زيادی برای نمايش تاريخ جاری بر اساس تقويم جلالی ارائه شده‌اند . در زير يک نمونه ساده ولی کارآمد آن ارائه می شود . اين نمونه تاريخ Server را نشان می دهد . برای اينكه تاريخ از روی كامپيوتر بازديدكننده محاسبه شود كافيست runat=server را از كد حذف كنيد .

کد:
<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>

<%= (IranDate) %>
 

pedramr

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

sabasoft

Member
درود بر آقای pedramr!
من منظورم اول با پست قبلتری بود و بعد با شما!
و من عذر می خوام چون متنش رو نخونده بودم... :-?
 

Zanguei

Member
درود بر آقای pedramr!
من منظورم اول با پست قبلتری بود و بعد با شما!
و من عذر می خوام چون متنش رو نخونده بودم... :-?
سلام دوست من
ببخشید منظورتون از پست قلبتری کدوم پست هست؟!!!
فکر کنم اون پست قبلتری رو هم مثل پست آقا پدرام درست نخوندید. البته شابدم باز منظورتون پست قبلتر قبلتری بوده باشه! :)
موفق باشید.
 

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

بالا