كسي مي تونه يه تقويم شمسي در جاوااسكريبت...

bw

Member
با سلام
خدمت شما كه عرض شود مشكل اين كد اونجوري كه قبلا گفتم مربوط به سال كبيسه هست.
يعني نميدونه چه سالي كبيسه است.
اين كد تو همه موارد خوب كار ميكنه بجز تحويل سال.
اين اصلاحي كه من انجام دادم و همچنين شما انجام داديد مشكلاي رو حل نميكنه.
نميدونم شما چه جوري ميگي من تستش كردم و مشكلي نداره؟!
من اين كد رو واسه تحويل سال 82-83 امتحان كردم و طبق معمول جواب اشتباه.
من خواهشم ا ز همه اينه كه اگه تغيري تو كد ميدن اونو واسه تمام موارد چك كنند تا بالاخره يه كد بدون نقص در بياد.

ممنون
 

bw

Member
من نظرم اينه كه از كدهاپي كه به زبانهاي ديگه نوشته شده و مشكلي هم نداره مثل همين وب سايت كمك بگيريم و اونو تبديل به JS كنيم.
چرا بياپيم دوباره اينكارو انجام بديم اگه كسي ديگع قبلا زحمتش رو كشيده.

ممنون
 

Amir531

Member
البته آقاي bw:
اين خطي كه شما به عنوان اصلاحيه نوشته بودين اشتباه بود٬ اما حالا اون اشتباه رو گرفتم
شما خطي كه من نوشتم رو در سورس اصلي جايگزين كنيد تا متوجه منظورم بشين
به هر حال با نظر شما مبني بر تهيه يه سورس بي‌نقص كاملا موافقم.
ممنون
 

حدیث

New Member
اصلاح تقویم شمسی

سلام دوستان عزيز!‌ من تازه واردم و اولين بار براي پيدا كردن كد تبديل تاريخ ميلادي به شمسي اومدم. خودم يك چيزايي نوشتم كه خيلي دقيق نبود. تو اين دو صفحه كه با صحبتهاي شما دوستان آشنا شدم متوجه شدم كه كد دومي كه توسط bw قرار بود كد اول را كه سامان نوشته بود تصحيح كنه يك روز را عقب نشان ميداد. تا اينجا حق با امير بود.
به گمونم با اين كار بشه درستش كرد

کد:
week[d]

يعني يك روز اضافي رو از هفته كم كنيم.
خدانگهدارتون
حديث
 

Amir531

Member
ضمن خوش‌آمدگويي به جناب حديث به اين سايت و تشكر از اينكه اولين ارسالشون در اين انجمنه.
دوستان اين سورسو ببينيد:
کد:
<html dir="rtl">

<head>
<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+1]+" "+months[month-1]+" "+ year+" "+"هـ.ش") ;
} 
</script> 
</head> 
<body dir="rtl" style="font-family:tahoma; FONT-SIZE: 12px">
<script>showdate()</script>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>تقويم هجري شمسي در جاوااسكريبت</title>
</body>

</html>
به نظر مياد برخي از عزيزان متوجه نشدند كه ما به كجا رسيديم.
از اين به بعد روي اين سورس نظر بدين.
نمي‌گم بي نقصه ولي كم‌ترين نقص رو داره.
به قول آقاي bw تنها نقصش در هنگام تحويل ساله
ولي در مواقع ديگه اشكالي نداره و درست كار مي‌كنه
در واقع اگه اين ايراد هم حل بشه٬ مي‌تونيم ختم اين انجمن رو اعلام كنيم
ممنون
 

AliReza26

Active 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+1]+" "+months[month-1]+" "+ year) ; 
} 
</script>
 

Amir531

Member
.

اين تقويم رو حال كنيد.
اين فايل رو بگيرين و به عنوان بك گراند دسك‌تاپ بذارين٬ بعد موس رو كه ببرين روي لينك تقويم امروز(كنار ساعت ويندوز)٬ تقويم نمايش داده مي‌شه.
البته چون مانيتور من 17 اينچه و رزوليشن اون 1280در 1024 اين صفحه هم براي اين خصوصيات تهيه شده٬ شما مي‌تونيد توي دريم ويور اونو متناسب با مانيتور خودتون كنيد يا فايلي بسازين كه موقعيت لايه اون لينك هميشه در منتها اليه پايين و سمت راست صفحه باشه.
به هر حال اينم يه راهه براي افزودن تقويم شمسي به ويندوز اكس‌پي بدون نصب برنامه جانبي كه معمولا اين برنامه‌هاي جانبي بد فرم و بد قلق هستن٬ مثل فارسي‌ساز MRT
 

bw

Member
با عرض سلام
خب كي ميتونه مشكل سال كبيسه رو تو اين كد حل كنه؟
من قبلا گفتم كه بايد الگوريتم سال كبيسه رو از زبانهاي ديگه گرفت و اونو تبديل كرد به JS
من فكر ميكنم تقويمهاپي كه تو اين وب سايت و وب سايت idevcenter.com و iranasp.com هستش بدمن نقص باشند.
چندي پيش من تو مجله شبكه يه مصاحبه خوندم با آقاي اميد خندان راد كه مبتكر تقويم هجري شمسي هستند و اونو به Microsoft هم پيشنهاد دادند كه تو ويندوز بعدي اضافه كنند.
همين وب سايتهاپي كه گفتم از كد آقاي خندان راد استفاده ميكنند.

ممنون
 

omidak

Active Member
سلام:
خوب اونو من اولين بار تويه همين سايت دادم و احتمالاً از همينجا برداشتن/ :wink:
 

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

بالا