PDA

View Full Version : convert کردن شمسی به میلادی



arsalansalar
دوشنبه 16 اردیبهشت 1387, 11:14 صبح
آیا کدی برای convert کردن تاریخ شمسی به میلادی وجود دارد؟
یعنی کاربر وارد کند"1387" و بعد از زدن یک دکمه نمایش داده شود"2008"

yavari
دوشنبه 16 اردیبهشت 1387, 11:20 صبح
سلام


Dim aa As New System.Globalization.PersianCalendar
Dim MIDate1 As DateTime = aa.ToDateTime(year1, month1, day1, 0, 0, 0, 0)
Dim MI1 As String = Mid(MIDate1, 1, 4) & Mid(MIDate1, 6, 2) & Mid(MIDate1, 9, 2)

موفق باشید

arsalansalar
دوشنبه 16 اردیبهشت 1387, 11:27 صبح
من از تابع زیر استفاده کردم:


Function ShamsiToMiladi(ByVal Year As Integer, ByVal Month As Integer, ByVal Day As Integer) As Date
Dim A As New System.Globalization.PersianCalendar
Return A.ToDateTime(Year, Month, Day, 0, 0, 0, 0)
End Function

ولی من فقط سال را می خواهم یعنی روز و ماه را نمی خواهم.و زمانی که در کد دست می برم فقط خطا می گیرد.
چگونه می توانم فقط سال را برگردانم؟

Dariuosh
دوشنبه 16 اردیبهشت 1387, 12:42 عصر
اينجوريش کن


Return A.ToDateTime(Year, Month, Day, 0, 0, 0, 0).Year

arsalansalar
دوشنبه 16 اردیبهشت 1387, 12:57 عصر
بازم فرقی نکرد.

yavari
دوشنبه 16 اردیبهشت 1387, 13:46 عصر
Dim aa As New System.Globalization.PersianCalendar
Dim MIDate1 As DateTime = aa.ToDateTime(1387, 2, 16, 0, 0, 0, 0)
Dim MI1 As String = Mid(MIDate1, 1, 4)

arsalansalar
دوشنبه 16 اردیبهشت 1387, 14:19 عصر
من کد شما را به صورت زیر استفاده کردم:


Dim aa As New System.Globalization.PersianCalendar
Dim MIDate1 As DateTime = aa.ToDateTime(1387, 2, 16, 0, 0, 0, 0)
Dim MI1 As String = Mid(MIDate1, 1, 4)
td.Text = MI1

نتیجه را در عکس زیر گذاشتم:
ماه و روز را بر می گرداند در صورتی که من سال را می خواهم!!!

Dariuosh
دوشنبه 16 اردیبهشت 1387, 14:36 عصر
Dim A As New System.Globalization.PersianCalendar
MsgBox(A.ToDateTime(1387, 2, 16, 0, 0, 0, 0).Year)
MsgBox(A.ToDateTime(1387, 2, 16, 0, 0, 0, 0))

linux
دوشنبه 16 اردیبهشت 1387, 14:37 عصر
من کد شما را به صورت زیر استفاده کردم:


Dim aa AsNew System.Globalization.PersianCalendar
Dim MIDate1 As DateTime = aa.ToDateTime(1387, 2, 16, 0, 0, 0, 0)
Dim MI1 AsString = Mid(MIDate1, 1, 4)
td.Text = MI1

نتیجه را در عکس زیر گذاشتم:
ماه و روز را بر می گرداند در صورتی که من سال را می خواهم!!!


Public Function GetYear(ByVal y As Integer, ByVal m As Integer, ByVal d As Integer) As Integer
Dim pc As New System.Globalization.PersianCalendar()
Return pc.ToDateTime(y, m, d, 0, 0, 0, 0, 0).Year
End Function
یکمی بیشتر دقت می گردید تابع اول با تغییر خروجیش از نوع date به integer درست بود.

arsalansalar
دوشنبه 16 اردیبهشت 1387, 15:04 عصر
Public Function GetYear(ByVal y As Integer, ByVal m As Integer, ByVal d As Integer) As Integer
Dim pc As New System.Globalization.PersianCalendar()
Return pc.ToDateTime(y, m, d, 0, 0, 0, 0, 0).Year
End Function
یکمی بیشتر دقت می گردید تابع اول با تغییر خروجیش از نوع date به integer درست بود.
من این کار را کردم ولی باز خطای زیر را می گیرد:

linux
دوشنبه 16 اردیبهشت 1387, 15:18 عصر
من این کار را کردم ولی باز خطای زیر را می گیرد:
خوب الان انتظار داری من چی بگم؟
شما لطف کنید یک کتاب خود آموز برنامه نویسی به زبان ویژوال بیسیک بخرید و با دقت از ابتدا تا انتها مطالعه کنید، کلا قبل از هرکار خوب فکر کنید، عجله نکنید ، بدونید چی می خواهید چطوری باید آن را بدست بیاورید روش بدست آوردنش چطوری هست.

این تابع 3 پارامتر می گیره، سال و ماه و روز ، بر اساس این پارامترها مشخص می کنه که این روز در چه سال میلادی قرار می گیره، من نمی دانم هدف شما از اینکه مقدار معادل میلادی یک سال شمسی را برگردانید چی هست؟
سال شمسی 1387 از فرودین تا 9 دی برابر سال 2008 هست و از 10 دی تا 29 اسفند برابر 2009 حالا شما کدامشان را می خواهید؟ اگر شما از نفر اول پرسیدید سال 1387 برابر کدام سال میلادی هست و جواب شنیدید که 2009 و نفر دوم جواب داد 2008 که هر دو هم درست گفتند چکار باید بکنید؟

hno2005
چهارشنبه 18 اردیبهشت 1387, 06:16 صبح
آقا لطفا به کامپوننت یا ابزار خوب برای تبدیل تاریخ معرفی کنید

با تشکر

parsavb
پنج شنبه 19 اردیبهشت 1387, 11:44 صبح
اینم یه کامپوننت تقریباً کامل که خواص و حالات اون رو کاملاً شرح دادم البته خواص دیگه ای هم داره که خودتون با کمی کنکاش ممی تونید اون رو در بیارید و توپروژه های خودتون از اون استفاده کنید البته تو وب مثالهای زیادی با این کامپوننت وجود داره که با کم یجستجو می تونید اونها رو پیدا کنید
تاريخ شمسی بصورت کامل
pt.DateToPersian(d).LongDate
تاريخ شمسی بصورت کوتاه
pt.DateToPersian(d).ShortDate
ديروز
pt.DateToPersian(d.AddDays(-1)).LongDate
فردا
pt.DateToPersian(d.AddDays(+1)).LongDate
تاریخ حروفی
pt.DateToPersian(d)._ToString
سال کبیسه هست یا نه
pt.DateToPersian(d).year
pt.DateToPersian(d).IsLeapYear
مثال
TextBox2.Text = pt.DateToPersian(d).LongDate
TextBox3.Text() = pt.DateToPersian(d).ShortDate
TextBox4.Text() = pt.DateToPersian(d.AddDays(-1)).LongDate
TextBox5.Text() = pt.DateToPersian(d.AddDays(+1)).LongDate
TextBox6.Text() = pt.DateToPersian(d).year
TextBox7.Text() = pt.DateToPersian(d).IsLeapYear
TextBox8.Text = d.ToLongDateString
TextBox11.Text = pt.DateToPersian(d)._ToString
تاریخ میلادی معادل شمسی
pd = pt.PersianToDate(TextBox12.Text)
TextBox13.Text = pd.ToShortDateString

parsavb
پنج شنبه 19 اردیبهشت 1387, 11:48 صبح
اگه مثال کاربردی این ابزار رو خواستید با من تماس بگیرید تا براتون بفرستم
PARSAVB@YAHOO.COM
PARSAVB@HOTMAIL.COM
PARSAVB@GMAIL.COM

linux
پنج شنبه 19 اردیبهشت 1387, 12:34 عصر
اگه مثال کاربردی این ابزار رو خواستید با من تماس بگیرید تا براتون بفرستم
PARSAVB@YAHOO.COM
PARSAVB@HOTMAIL.COM
PARSAVB@GMAIL.COM
این dll را خیلی وقت پیش درست کرده بودم ، بعدها بهتر شد و نسخه جدید با یکمی تغییرات و افزودن چندتا چیز دیگه تا چند وقت دیگه تموم میشه.براتون می فرستم اگر تمام شد.

Morteza_s
پنج شنبه 19 اردیبهشت 1387, 17:53 عصر
جناب لینوکس، ورژن جدیدی از DateTimePicker ای که نوشته بودید آماده نکردید؟