تاریخ هجری شمسی

rah

Member
سلام
کمک میخواستم در مورد نمایش تاریخ شمسی.
تو همین انجمن سرچ کردم چیزهایی گیرم اومد
ولی من همچین چیزی میخوام:

1)مثلاً به این صورت نمایش بده : دوشنبه 7 خرداد 1386
2)بعد اینکه تاریخ میلادی رو از رو سیستم کاربر نخونه بعد به شمسی تبدیل کنه. چون ممکنه تاریخ و ساعت سیستم کاربر تنظیم نباشه. اونوقت تاریخ رو اشتباه نشون میده. چیزی میخوام که اگر تاریخ سیستم کاربر تنظیم نبود تاریخ رو درست نشون بده . یعنی میشه گفت به یه سرور تاریخ درست وصل باشه !!!
ممنون
منتظرم
 

desiran

Member
خوب عزیر جان
شما با چه زبانی می خوایی این کارو برکنی . 1
بعد هم شما اگر از زبان های سرور ساید مثل asp , asp.net , php و.... استفاده کنی . اون به شما تاریخ سرور (یعنی جایی که صفحه ی شما اون جاست رو به شما میده) که حتما دقیق هست.
و اگه بخوایی ساعت کاربر رو نمایش بدی باید از زبان های سمت کاربر client-side استفاده کنی .
و برای تاریخ هم اگه بگی زبان برنامه نویسیت چیه شاید بتونم کمکت کنم

و یه چیز دیگه اینکه (حالا تو هر زبانی) شما باید روز هفته - روز - نام ماه - و سال رو جدا گانه بدست بیاری بعد در کنار هم مرتب کنی. و اگر می خوایی در دیتا بیس ثبت کنی . بهتره که هر کدوم رو در یک فیلد جداگانه بریزی که بعدا برای مرتب سازی خیلی راحت تری .
 

rah

Member
با زبان ASP، :)
به همون صورت Server Side.
--
بعدش هم اینکه من تاریخ ها رو نمی خوام در دیتابیس ثبت کنم. فقط میخوام به همون صورتی که گفتم به نمایش در آرم.
ممنون میشم بتونی کمکم کنی.
 

m1pfard

Member
اگه جاوا اسکریپت باشه نمیشه؟!
مثل این فایل که پیوست شده.
10 نوع خروجی داره:

---------------------------------------------------------
8/3/1386
8/3/86
8 خرداد 1386
هشتم خرداد 1386
هشتم خرداد ماه 1386
سه شنبه، 8/3/1386
سه شنبه، 8/3/86
سه شنبه، 8 خرداد 1386
سه شنبه، هشتم خرداد 1386
سه شنبه، هشتم خرداد ماه 1386
--------------------------------------------------------

درضمن فکر کنم اگه runat=server باشه، تاریخ سرور رو بده.
 

پیوست ها

  • hejri.rar
    2.2 کیلوبایت · بازدیدها: 30
  • Like
Reactions: rah

rah

Member
خروجی ها درسته.
اما با قرار دادن runat به server تغییری ایجاد نمی شه.
و تاریخ سیستم کاربر رو به شمسی بر میگردونه.
چیکار بایست انجام داد؟
 

m1pfard

Member
ببینید، این برنامه یه تابع با نام ConvertDateTag هست که از یه ورودی به نام st که تاریخ میلادی است استفاده می کنه.
به این ترتیب شما می تونید هر تاریخی رو که می خوایید به صورت هجری تبدیل کنید. یعنی با دستورات سمت سرور، تاریخ سرور رو بدست بیارید (البته به صورت mm/dd/yyyy) بعد اونو داخل متغیر st قرار بدین.
در واقع ورودی تابع شما می تونه هر تاریخی باشه (تاریخ سرور یا تاریخ لوکال یا تاریخ خوانده شده از دیتابیس و ...) - بستگی به نحوه استفادتون داره.
 

rah

Member
درسته. ولی حالا چطوری میتونم ورودی تابع رو سرور قرار بدم نه سیستم کاربر؟
 

desiran

Member
ببین این به کارت می یاد
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(Date)
Mm = Month(Date)
Ym = Year(Date)
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 - 1)
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

Ys
Ds
Mon(Ms - 1)
W(WeekDay(Date) - 1)
 
  • Like
Reactions: rah

rah

Member
متشکرم.
پس از آپلود مشکل حل شد.
پایان//
 
آخرین ویرایش:

rah

Member
امیر جان، این تاپیک به نتیجه رسید.
اما این پست آخری رو خبر ندارم؟!
 

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

بالا