PDA

View Full Version : سوال: مشكل با تاريخ شمسي



MOR_MS
یک شنبه 25 تیر 1391, 23:24 عصر
سلام
من در برنامه ام براي تبديل تاريخ ميلادي به شمسي از چند dll فارسي استفاده كردم ولي به يه مشكل برخوردم
تاريخي كه در ارديبهشت ماه يا سه ماه اول تبديل ميشه اگه بيشتر از مثلاً1391/02/28 قبول نمي كنه 29 و30 و31 را قبول نمي كنه چكار بايد انجام بدم

barnamenevisforme
یک شنبه 25 تیر 1391, 23:43 عصر
سلام
نیاز به استفاده از هیچ dll خارج از .net نیست.
در ابتدای برنامه system.globalization رو import کنید.
یه متغیر از نوع persiancalendar تعریف کنید.توابع مربوط به اون رو واسه تبدیل ها فراخونی کنید.
مثلا:dim percal as presiancalendar


dim y as string
y=percal.getyear(date.now

MOR_MS
دوشنبه 26 تیر 1391, 01:00 صبح
سلام
من همين كاري را كه گفته بوديد كردم
ابتداد import كردم و متغير dim percal as presiancalendar هم ساختم
ولي بازم اررو ميده
من چهارتا تك باكس دارم
در اولين تكسباكس تاريخ مورد نظر را وارد ميكنم بعد دوتكس باكس يكي براي افزايش روز و يكي براي افزايش ماه
تاريخ واردشده را ابتداد با روز جمع ميكنم كه اررو ميده
بعد تاريخ بدست امده را با مقدار ماه جمع ميكنم تا تاريخ جديد ديگه بدست بياد كه در تكس باكس 4 وارد بشه
اگه اشتباه است بهم بگين

Imports System.Globalization

Dim percal As PersianCalendar
Dim aadnewdata1 As String 'مقدار روز اضافه شده به تاريخ
Dim aadnewdata2 As String 'مقدار ماه اضافخ شده به تاريخ

aadnewdata1 = percal.AddDays(Tex_DATAs1.Text, Tex_ROZ.Text)
aadnewdata2 = percal.AddMonths(aadnewdata1, Tex_MAH.Text)
Me.Tex_SARrASID1.Text = aadnewdata2

arash020
دوشنبه 26 تیر 1391, 02:37 صبح
سلام
وبلاگ : http://eaglevb.blogfa.com

barnamenevisforme
دوشنبه 26 تیر 1391, 12:26 عصر
سلام
برای این کار شما باید پس از فراخونی توابع مقدار برگشت داده شده رو در یه متغیر از نوع date ذخیره کنید و نه string.در ضمن یادتون باشه که مقدار برگشت داده شده دوباره بر حسب تاریخ میلادی هست .مثلا عبارت زیر اول بیست روز و سپس 2 ماه به تاریخ حال حاضر اضافه میکنه:
Dim percal As PersianCalendar
Dim my_date As Date
my_date = percal.AddDays(Date.Now, 20)
my_date = percal.AddMonths(my_date, 2)

MOR_MS
دوشنبه 26 تیر 1391, 17:28 عصر
سلام
دوست عزيز ظاهراً اين آدرس مشكل داره

MOR_MS
دوشنبه 26 تیر 1391, 19:52 عصر
سلام
دوست عزيز توي كد شما عمليات افزايش روز و ماه اگه اشتباه نكنم روي يك تاريخ ميلادي انجام ميشه(Date.Now )درصورتي كه من ابتدا بايد يك تاريخ شمسي را وارد كنم
من بايد ابتدا يك تاريخ شمسي را وارد كنم بعد اين تاريخ را تبديل به تاريخ ميلادي كنم و افزايش روز و ماه را روي تاريخ جديد انجام بدم و درنهايت تاريخ بدست امده را به تاريخ شمسي برگردونم
كه براي تبديل تاريخ شمسي به ميلادي در ابتدا به ساكن به مشكل برميخورم و تاريخ مثل 1390/02/29 را به ميلادي بر نمي گردونه تابتونم تغيرات انجام دهم
اگر راهي هست و يامن اشتباه ميرم خواهش ميكنم راهنماييم كنيد و اگه ممكنه كدشو برام بنويسيد من كه بهركجا سر زدم يا همين مشكل بود و يا اينكه ابتدا به ساكن بايك تاريخ ميلادي شروع ميشد

vahoumano
دوشنبه 26 تیر 1391, 21:16 عصر
درود
از کد زیر استفاده کنید . امیدوارم مفید واقع شود .



Imports


System.Globalization.PersianCalendar

Public


Class Form1



Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load



Dim getdatemhk As New Globalization.PersianCalendar

TextBox1.Text = getdatemhk.GetYear(Now.Date).ToString +

"/" + getdatemhk.GetMonth(Now.Date).ToString + "/" + getdatemhk.GetDayOfMonth(Now.Date).ToString



End Sub

End


Class

MOR_MS
دوشنبه 26 تیر 1391, 21:23 عصر
سلام
ببخشيد ميشه بگين اين كد چكاري را انجام ميده

MOR_MS
دوشنبه 26 تیر 1391, 23:15 عصر
كسي نيست كمكم كنه تمام كار ارام مونده ميخوام برنامه ام ببندم

vahoumano
سه شنبه 27 تیر 1391, 09:11 صبح
درود
این کد تاریخ میلادی را بدون هیچ مشکلی به تاریخ شمسی تبدیل می کند

barnamenevisforme
سه شنبه 27 تیر 1391, 12:42 عصر
89867سلام
برنامه ای که ضمیمه کردم تاریخ شمسی رو میگیره،همچنین ساعت اون روز بعد به تعداد دلخواه روز و ساعت بهش اضافه میکنه.

MOR_MS
سه شنبه 27 تیر 1391, 17:24 عصر
سلام
من برنامه شمارا اجرا کردم کار میکرد البته توی برنامه خودم امتهان نکردم دست شما درد نکنه
میشه مقدار ماه را هم مثل روز بهش داد