PDA

View Full Version : آموزش: محاسبه تعداد روز بين دو تاريخ شمسي؟



ebrahimv
شنبه 24 دی 1390, 22:30 عصر
سلام
من از كاربر دو تاريخ شمسي ميگيرم مي خوام بدونم بين دو تاريخ چند روز گذشته
مثال
تاريخ1 1390/12/20
تاريخ 2 1391/01/05

مجتبی کریمی
شنبه 24 دی 1390, 22:57 عصر
سلام
چیزی که به ذهن من رسید!
احتمالا روش بهتری هم هست


Dim PC As New Globalization.PersianCalendar

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim PDate1 As String = "1390/12/20"
Dim PDate2 As String = "1391/5/1"
Dim Date1, Date2 As Date
Dim R1, R2 As Dates

R1 = GetDate(PDate1)
R2 = GetDate(PDate2)
Date1 = PC.ToDateTime(R2.Year, R2.Month, R2.Day, 12, 0, 0, 0)
Date2 = PC.ToDateTime(R1.Year, R1.Month, R1.Day, 12, 0, 0, 0)
MsgBox(DateDiff(DateInterval.Day, Date2, Date1))
End Sub

Function GetDate(ByVal PersianDate As String) As Dates
Dim Col() As String
Dim Slash() As String = {"/"}
Dim Result As Dates
Col = PersianDate.Split(Slash, StringSplitOptions.RemoveEmptyEntries)
Result.Year = Integer.Parse(Col(0))
Result.Month = Integer.Parse(Col(1))
Result.Day = Integer.Parse(Col(2))
Return Result
End Function

Structure Dates
Dim Year As Integer
Dim Month As Integer
Dim Day As Integer
End Structure

ebrahimv
شنبه 24 دی 1390, 23:03 عصر
Private Function ShamsiDateDiff(ByVal Date1 As String, ByVal Date2 As String, Optional ByVal Seperator As String = "/") As Integer
Dim pc As New Globalization.PersianCalendar
Dim da1 = Date1.Split(Seperator)
Dim da2 = Date2.Split(Seperator)
Dim dt1 = pc.ToDateTime(da1(0), da1(1), da1(2), 0, 0, 0, 0)
Dim dt2 = pc.ToDateTime(da2(0), da2(1), da2(2), 0, 0, 0, 0)
Return DateDiff(DateInterval.Day, dt1, dt2)
End Function