PDA

View Full Version : اشکال در محاسبه تاریخ



mhmoein
یک شنبه 26 اردیبهشت 1389, 21:59 عصر
سلام دوستان محترم

می شه بگید اشکال این کد کجاست من تاریخ 28/02/1389 رو بهش می دم می گم یک روز بهش اضافه کن تاریخ 1/03/1389 رو تحویل می ده ؟




Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As DateTime = (DateTime.Parse("1389/02/28")).AddDays(1)
TextBox1.Text = a.ToString("d")
End Sub

salehbagheri
یک شنبه 26 اردیبهشت 1389, 23:24 عصر
اولاً كه شما از كلاس DateTime داريد استفاده ميكنيد كه اين كلاس مخصوص تاريخ ميلادي هست.

در تاريخ ميلادي، روز در وسط قرار ميگيره كه عدد 2 هست.

با اضافه كردن يك روز، تاريخ شما بايد به اين صورت بشه: 28/03/1389 كه ماه 28 نداريم بنابراين مقدار 1 رو به عنوان ماه درنظر ميگيره كه ميشه : 1/3/1389 !

براي استفاده از تاريخ شمسي، ابتدا بايد تاريخ ميلادي مذكور رو به شمسي تبديل كرده و سپس استفاده كنيد.
در اين مورد نيز در سايت بسيار بحث شده. لطفاً جستجو كنيد.

Peyman.Gh
یک شنبه 26 اردیبهشت 1389, 23:56 عصر
Dim [date] As String = "1389/02/27"
Dim year As Integer = Integer.Parse([date].Substring(0, 4))
Dim month As Integer = Integer.Parse([date].Substring(5, 2))
Dim day As Integer = Integer.Parse([date].Substring(8, 2))
Dim p As New System.Globalization.PersianCalendar()
Dim dt As DateTime = p.ToDateTime(year, month, day, 0, 0, 0, 0)
dt = dt.AddDays(1)
Dim pr As New System.Globalization.PersianCalendar()
Label1.Text = ((pr.GetYear(dt).ToString() & "/") + pr.GetMonth(dt).ToString() & "/") + pr.GetDayOfMonth(dt).ToString()
موفق باشید.

mhmoein
دوشنبه 27 اردیبهشت 1389, 00:21 صبح
واقعا ازت ممنونم دوست عزیز
امیدوارم تو این شب بزرگ به حق صاحبش همیشه به هر چی که می خوای برسی . ممنون

mhmoein
دوشنبه 27 اردیبهشت 1389, 01:33 صبح
واقعا ببخشید اما می خواستم بدونم این کدی که شما لطف فرمودید تاریخ رو به صورت

مثلا : 1/1/1389 بر می گردونه می شه کاری کرد که تاریخ رو به صورت 01/01/1389 نشون بده .

ممنون از کمکت

Peyman.Gh
دوشنبه 27 اردیبهشت 1389, 10:01 صبح
Dim [date] As String = "1389/01/01"
Dim year As Integer = Integer.Parse([date].Substring(0, 4))
Dim month As Integer = Integer.Parse([date].Substring(5, 2))
Dim day As Integer = Integer.Parse([date].Substring(8, 2))
Dim p As New System.Globalization.PersianCalendar()
Dim dt As DateTime = p.ToDateTime(year, month, day, 0, 0, 0, 0)
dt = dt.AddDays(1)
Dim pr As New System.Globalization.PersianCalendar()
Dim y As String = pr.GetYear(dt).ToString()
Dim m As String = pr.GetMonth(dt).ToString()
Dim d As String = pr.GetDayOfMonth(dt).ToString()
If (m.Length < 2) Then
m = "0" + m
End If
If (d.Length < 2) Then
d = "0" + d
End If
Label1.Text = y + "/" + m + "/" + d
موفق باشید.