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

مشکل در تبدیل تاریخ شمسی

nttacplus

کاربر تازه وارد
تاریخ عضویت
14 سپتامبر 2004
نوشته‌ها
52
لایک‌ها
1
سن
42
سلام،
آقا من یک برنامه دارم که مار تبدیل تاریخ میلادی به شمسیش به عهده فایل fdate1.asp هست اما چند وقت هست که تاریخ رو یکروز دیرتر نشون میده و امروز که وارد سال 2009 شدیم دیگه نمیتونه 2009 رو محاسبه کنه، اگر دوستان این رو میتونن اصلاح کنن ممنون میشم.


<%
function condate(datt)
D = Array (20, 19, 20, 20, 21, 21, 22, 22, 22, 22, 21, 21)
P = Array (11, 12, 10, 12, 11, 11, 10, 10, 10, 9, 10, 10)
W = Array ("يکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه")
Mon = Array ("فروردين", "ارديبهشت", "خرداد", "تير", "مرداد", "شهريور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند")
Dm = Day(datt)
Mm = Month(datt)
Ym = Year(datt)
U = 0
Rp = 0
If (Ym Mod 4) = 0 Then U = 1
If ((Ym Mod 100) = 0 AND (Ym Mod 400) <> 0) Then U = 0
Ys = Ym - 622
X = Ys - 22
X = X Mod 33
If ((X Mod 4) = 0 AND X <> 32) Then Rp = 1
I = Not(Rp-2) + NOT(U - 2) * 2
X = 0
If (I = 0 AND Mm = 3) Then X = 1
If I = 0 Then I = 3
Ms = (9 + Mm) Mod 13
If Ms < 10 Then Ms = Ms + 1
D1 = D(Mm - 2)
If (I = 1 AND Mm > 2) Then D1 = D1 - 1
If (I = 2 AND Mm < 3) then D1 = D1 - 1
P1 = P(Mm - 1)
If (I = 1 AND Mm > 2) Then P1 = P1 + 1
If (I = 2 AND Mm < 4) Then P1 = P1 + 1
If (Dm > 0 AND Dm <= D1) Then
Ds = P1 + Dm + X - 1
X = 1
Else
Ds = Dm - D1
Ms = Ms + 1
If Ms = 13 Then Ms = 1
X = 2
End If
If ((Mm = 3 AND X = 2) OR Mm > 3) Then Ys = Ys + 1
DateShamsi = W(WeekDay(datt) - 1) & "&nbsp;" & Ds & "&nbsp;" & Mon(Ms - 1) & "&nbsp;" & Ys
response.write dateshamsi&" "
if right(timevalue(datt),2) = "PM" then
response.write replace(timevalue(datt),"PM","") & "ب-ظ"
else
response.write replace(timevalue(datt),"AM","") & "ق-ظ"
end if
end function
%>
 
Last edited:

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,298
لایک‌ها
17
سن
42
محل سکونت
North Pole
این همون تقویم asp کزایی اه که اویل بار تو سایت iranasp.net مرحوم بچه ها گذاشته بودند ، یه عمری باهاش حال کردیم :) امسال سال کبیسه بود و یک روز به سال اضافه شد ، این تقویم سال کبیسه رو محاسبه نمیکنه در نتیجه فکر میکنم به فعلا باید یه روز کمتر از تاریخ واقعی رو بهش بدی تا درست تبدیل کنه ، تا وقتی که مام سال کبیسه بخوریم و همه چیز درست بشه :)

امیدوارم که کم کم شما هم برنامه تون رو به asp.net تبدیل کنید و از کلاس خود دات نت برای تقویم فارسی استفاده کنید :)
 

nttacplus

کاربر تازه وارد
تاریخ عضویت
14 سپتامبر 2004
نوشته‌ها
52
لایک‌ها
1
سن
42
مشکل اینجاست که فقط باید این برنامه asp باشه
 

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,298
لایک‌ها
17
سن
42
محل سکونت
North Pole
اگر حافظه م درست یاری کنی باید یه همچین تغییری به کدت بدی ( خط روم رو اضافه کنی)

کد:
function condate(datt)
datt = DateAdd("d",-1,datt)
....

تابع DateAdd انواع تاریخ رو به تاریخی اضافه میکنه بجای d میتونی برای استغاده های دیگه (سال و ماه و... ) از آرگومانهای زیر استغاده کنی :



yyyy-> Year
m-> Month

d-> Day

h-> Hour

n-> Minute

s-> Second

w-> Weekday

ww-> Week of the year

q-> Quarter


یادت باشه مشکل سال کبیسه که رفع شد اون خط رو دوباره باید حذف کنی
 
Last edited:
بالا