PDA

View Full Version : سوال: تبدیل تاریخ،یه نفر کمک کنه



BehzadBar
دوشنبه 27 خرداد 1387, 12:53 عصر
من برای تبدیل تاریخ به یه برنامه نیاز دارم ممکنه یکی کمک کنه؟:گریه:

amirsajjadi
دوشنبه 27 خرداد 1387, 13:02 عصر
یعنی چی ؟
تبدیل تاریخ به شمسی رو میخوای ؟

BehzadBar
دوشنبه 27 خرداد 1387, 13:06 عصر
تبدیل تاریخ شمسی به میلادی

kablayi
دوشنبه 27 خرداد 1387, 14:16 عصر
سلام ...
دوست عزیز اگر یه کم جستجو میکردی پیدا می شد ...
اینم یه برنامه برای تبدیل تاریخ (شمسی به میلادی و میلادی به شمسی ... با استفاده از یه DLL ...

موفق باشید ...

kablayi
دوشنبه 27 خرداد 1387, 14:30 عصر
اگر اون بدردت نخورد میتونی از این استفاده کنی ... تو این فایلPDF هر دو تبدیل نوشته شده ...

بازم موفق باشید ...

salehbagheri
سه شنبه 28 خرداد 1387, 13:19 عصر
ببین اینجا بدردت می خوره یا نه!
http://barnamenevis.org/forum/showthread.php?t=94395

BehzadBar
سه شنبه 28 خرداد 1387, 14:13 عصر
خیلی خیلی ممنونم دوستان واقعا عالی بود

saman_itc
چهارشنبه 29 خرداد 1387, 09:18 صبح
تاریخ میلادی چرا؟با شمسی مشکل داری؟ یه نکاه به این بندارز

BehzadBar
چهارشنبه 29 خرداد 1387, 09:28 صبح
دوست عزیز با تشکر از فایل PDF واقعا عالی بود و کارمو راه انداخت
من یه کم تغییرات توش دادم ولی تو ماههای 1و2و3و4و5 روز را یک روز بیشتر محاسبه میکنه

Public Function shams2mil(ByVal iran_Yyyy_Mm_Dd As String)
'yyyy/mm/dd in latin-number

Dim y As String

Dim m As String

Dim d As String

y = Val(Mid(iran_Yyyy_Mm_Dd, 1, 4))
m = Val(Mid(iran_Yyyy_Mm_Dd, 6, 2))
d = Val(Mid(iran_Yyyy_Mm_Dd, 9, 2))
If m < 10 Or (m = 10 And d < 11) Then _
y = y + 621 Else y = y + 622
Select Case m
Case 1 : If d < 12 Then m = 3 : d = d + 20 Else m = 4 : d = d - 11
Case 2 : If d < 11 Then m = 4 : d = d + 20 Else m = 5 : d = d - 10
Case 3 : If d < 11 Then m = 5 : d = d + 21 Else m = 6 : d = d - 10
Case 4 : If d < 10 Then m = 6 : d = d + 21 Else m = 7 : d = d - 9
Case 5, 6, 8 : If d < 10 Then m = m + 2 : d = d + 22 Else _
m = m + 3 : d = d - 9
Case 7 : If d < 9 Then m = 9 : d = d + 22 Else m = 10 : d = d - 8
Case 9 : If d < 10 Then m = 11 : d = d + 21 Else m = 12 : d = d - 9
Case 10 : If d < 11 Then m = 12 : d = d + 21 Else m = 1 : d = d - 10
Case 11 : If d < 12 Then m = 1 : d = d + 20 Else m = 2 : d = d - 11
Case 12 : If d < 10 Then m = 2 : d = d + 19 Else m = 3 : d = d - 9
End Select

shams2mil = Mid(Str(m), 2) + "-" + Mid(Str(d), 2) + "-" + Str(y)
'shams2mil = Right("00" + Mid(Str(m), 2), 2) + "-" + Right("00" + Mid(Str(d), 2), 2) + "-" + Right(Str(y), 4)

End Function

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox4.Text = shams2mil(TextBox3.Text)
End Sub

saman_itc
چهارشنبه 29 خرداد 1387, 09:32 صبح
http://barnamenevis.org/forum/showthread.php?t=94395

mehrnoosh_al62
چهارشنبه 29 خرداد 1387, 10:19 صبح
اگه از HM_FarsiCalender استفاده میکنی میتونی با کد زیر تبدیلش کنی

Dim pt As New PersinToolsClass()
Dim dt As New DateTime()
dt = pt.PersianToDate(hM_FarsiCalendar1.Text)

BehzadBar
چهارشنبه 29 خرداد 1387, 19:03 عصر
اگه از HM_FarsiCalender استفاده میکنی میتونی با کد زیر تبدیلش کنی

Dim pt As New PersinToolsClass()
Dim dt As New DateTime()
dt = pt.PersianToDate(hM_FarsiCalendar1.Text)

سلام میشه یه کمی درباره این PesianToolsClass توضیح بدید من اصلا باهاش آشنا نیستم

saman_itc
چهارشنبه 29 خرداد 1387, 22:11 عصر
سلام میشه یه کمی درباره این PesianToolsClass توضیح بدید من اصلا باهاش آشنا نیستم
شما تو کدام قسمت تاریخ مشکل دارین؟

mehrnoosh_al62
پنج شنبه 30 خرداد 1387, 09:49 صبح
PersianToolsClass یه فایل dll که اونو به پروژتون add کنید من این فایل رو به همراه HM_FarsiCalender رو براتون میذارم تا ازش استفاده کنید . ابتدا هر دو را AddRefrence کنید و بعد
HM_FarsiCalender رو به toolBox اضافه کنید
برای تبدیل تاریخ شمسی به میلادی از کد زیر :

dim pt as new PersinToolsClass();
dim dt = new Date();
dt = pt.PersianToDate(hM_baygani_date.Text);

و برای تبدیل تاریخ میلادی به شمسی از کد زیر استفاده کنید

dim pt as new PersinToolsClass();
dim pc as new System.Globalization.PersianCalendar();

dim dt as new Date();
dt=[tarikhe miladi]
textbox1.text= pc.GetYear(dt).ToString().Substring(2, 2) + "/" + pc.GetMonth(dt) + "/" + pc.GetDayOfMonth(dt);

kablayi
جمعه 31 خرداد 1387, 01:25 صبح
سلام ...
اگر پوشه برنامه رو باز کنی یه فایل PersianTools.dll میبینی ...
شما بایستی ابتدا از قسمت سولوشن اکسپلورر این dll که همراه برنامه براتئون گذاشتم رو به رفرنسهاتون اضافه کنید ...
بعد به این شکل عمل کنید ...


Dim tarikh As New PersianToolS.PersinToolsClass
Dim d As Date
d = d.Today
Label11.Text = tarikh.DateToPersian(d).LongDate 'نمایش تاریخ به صورت کامل
Label11.Text = tarikh.DateToPersian(d).day ' شماره روز
Label11.Text = tarikh.DateToPersian(d).dayofweek 'ایام هفته
Label11.Text = tarikh.DateToPersian(d).month ' شماره ماه
Label11.Text = tarikh.DateToPersian(d).monthName ' نام ماه
Label11.Text = tarikh.DateToPersian(d).shortdate ' نمایش تاریخ به صورت استاندارد yyyy/mm/dd
Label11.Text = tarikh.DateToPersian(d).year 'سال
Label11.Text = tarikh.DateToPersian(d)._tostring ' نمایش تاریخ به حروف



اینم اون فایل dll که کاربر linux اونو تهیه کرده و برای استفاده دوستان تو این فوروم گذاشته بود ...
همینجا دوباره ازش تشکر میکنم ...
موفق باشید ...

saman_itc
جمعه 31 خرداد 1387, 02:15 صبح
تو ورود تاریخ خیلی سخت نمیشه؟
کاربر خودش باید / بزنه؟

kablayi
جمعه 31 خرداد 1387, 13:22 عصر
سلام ...
گمون نمیکنم سخت بشه یه کمبو برای روز یه کمبو برای ماه و یه کمبوباکس برای سال در نظر بگیر بعد هر سه رو به صورت استاندارد میلادی ترکیب کن (mm/dd/yyyy) بعد بریز تو متغیر d ...

mehrnoosh_al62
شنبه 01 تیر 1387, 10:39 صبح
وقتی از HM_Farsicalender استفاده کنی دیگه لزومی به تایپ نداری همون DateTimePicker حالا به شکل تاریخ شمسی...