اگر این dll را من درست کردم! منظورم این بوده که تاریخ میلادی در متغیر date ذخیره بشه و هر وقت احتیاج بود به صورت تاریخ شمسی تبدیل شده و بصورت string نمایش داده بشه.
وقتی شما 1384/02/31 را در متغیر date قرار می دهید این تاریخ به عنوان تاریخ میلادی در نظر گرفته میشه
یعنی 1384 میلادی یعنی 700 سال پیش و دومین ماه میلادی 31 روز نیست. و این باعث بروز این اشکال میشه.
به هر حال منظور از این dll و توابع این بوده است که شما تاریخ میلادی را در متغیر date ذخیره کنید و هر وقت احتیاج شد تاریخ را بصورت شمسی بر گردونید یا تاریخ را از کاربر به صورت شمسی بگیرید و معادل میلادی اون تاریخ را در متغیر date ثبت کنید مثال زیر را نگاه کنید
Dim PDC As New PersianDateSupport.PersianDate
Dim miladiDate As Date
Dim shamsidate As String
shamsidate = InputBox("shamsi Date")
miladiDate = PDC.PersianToDate(shamsidate)
MsgBox(PDC.DateToPersian(miladiDate.AddDay s(150)) & " تاریخ ورودی شما به اضافه 150 روز دیگر")
امیدوارم منظور من را متوجه شده باشی که برای چی این dll را درست کردم
گرفتن تاریخ بصورت شمسی تبدیل به معادل آن تاریخ بصورت میلادی برای ذخیره در دیتابیس ، محاسبات روی این مقدار مانند اضافه کردن روز و ماه و سال و ...
به هر حال تاریخ شمسی را در متغیر date ذخیره نکنید
Dim PDC As New PersianDateSupport.PersianDate
Dim miladiDate As Date
Dim shamsidate As String
shamsidate = InputBox("shamsi Date")
miladiDate = PDC.PersianToDate(shamsidate)
MsgBox(PDC.DateToPersian(miladiDate.AddDay s(150)) & " تاریخ ورودی شما به اضافه 150 روز دیگر")
Dim d1 As String
Dim d2 As String
Dim d3 As Date
Dim d4 As Date
d1 = InputBox("shamsi Date1")
d2 = InputBox("shamsi Date2")
d3 = PDC.PersianToDate(d1)
d4 = PDC.PersianToDate(d2)
MsgBox(DateDiff(DateInterval.Day, d3, d4) & "اختلاف بین این دو تاریخ ")
این کد ها را خوب مطالعه کنید