PDA

View Full Version : سوال: توابع مربوط به تاریخ در Vb.net



saeedgoodboy
سه شنبه 27 بهمن 1394, 05:41 صبح
سلام دوستان


من به 2 تا تابع احتیاج دارم که توضیحاتش رو خدمتون میدم ( vb.net (http://vb.net/) )
تابع اول : میخوام که یک عدد رو به یک تاریخ شمسی اضافه کنه و تاریخ جدید رو بده
مثال 30 روز رو به 1394/01/01 اضافه کنه و خروجی بشه 1394/01/31


تابع دوم : 2 تا تاریخ شمسی رو با هم مقایسه کنه و اختلافش رو به مقدار روز بهمون بده

ممنون از همه اگر جوابم رو بدین واقعا خوشحالم میکنین

hamidrezax1
سه شنبه 27 بهمن 1394, 11:03 صبح
دوست عزیز این نمونه کد ها رو معمولا با استفاده از dll انجام میدن که تو سایت های مختلف وجود داره یکم سرچ در اینترنت قطعا به جوابت میرسید
مثلا (http://forum.oranustalk.com/showthread.php?t=120)

gilsoft
چهارشنبه 28 بهمن 1394, 07:01 صبح
تابع اول : میخوام که یک عدد رو به یک تاریخ شمسی اضافه کنه و تاریخ جدید رو بده
تابع دوم : 2 تا تاریخ شمسی رو با هم مقایسه کنه و اختلافش رو به مقدار روز بهمون بده


سلام دوست عزیز

اینم کدهایی که میخواستی:
Imports Microsoft.VisualBasic
Imports System.Globalization

Module Module1

Enum eYMD
Year = 0
Month = 1
Day = 2
End Enum

Enum eDateFormat
DMY = 0
YMD = 1
MDY = 2
End Enum

Public GPC As New System.Globalization.PersianCalendar

Public Function Shamsi_Now() As String
Dim mDT As Date = Date.Now
Return (String.Format("{0}/{1:00}/{2:00}", {GPC.GetYear(mDT), GPC.GetMonth(mDT), GPC.GetDayOfMonth(mDT)}))
End Function 'Shamsi_Now() As String تاریخ روز (شمسی) را برمیگرداند

Public Function ShDateAddDays(pDate As String, days As Integer) As String
Dim value As String = ""
pDate = pDate.Trim
If pDate = String.Empty Then Return (Shamsi_Now())
value = GPC.AddDays(pDate, days).ToString("yyyy/MM/dd")
Return value
End Function 'ShDateAddDays() AS String اضافه کردن (جمع و تفریق) روز به تاریخ شمسی

Public Function ShDateAddMonths(pDate As String, Months As Integer) As String
Dim value As String = ""
pDate = pDate.Trim
If pDate = String.Empty Then Return (Shamsi_Now())
value = GPC.AddMonths(pDate, Months).ToString("yyyy/MM/dd")
Return value
End Function 'ShDateAddDays() AS String اضافه کردن (جمع و تفریق) ماه به تاریخ شمسی

Public Function ShDateAddYears(pDate As String, Years As Integer) As String
Dim value As String = ""
pDate = pDate.Trim
If pDate = String.Empty Then Return (Shamsi_Now())
value = GPC.AddYears(pDate, Years).ToString("yyyy/MM/dd")
Return value
End Function 'ShDateAddDays() AS String اضافه کردن (جمع و تفریق) سال به تاریخ شمسی

Public Function ShDateAddYMD(pDate As String, YMDvalue As Integer, mode As eYMD) As String
Dim value As String = ""
pDate = pDate.Trim
If pDate = String.Empty Then Return (Shamsi_Now())
Select Case mode
Case eYMD.Day : value = GPC.AddDays(pDate, YMDvalue).ToString("yyyy/MM/dd")
Case eYMD.Month : value = GPC.AddMonths(pDate, YMDvalue).ToString("yyyy/MM/dd")
Case eYMD.Year : value = GPC.AddYears(pDate, YMDvalue).ToString("yyyy/MM/dd")
End Select
Return value
End Function 'ShDateAddDays() AS String اضافه کردن (جمع و تفریق) روز/ماه/سال به تاریخ شمسی

End Module



موفق باشید .....

gilsoft
چهارشنبه 28 بهمن 1394, 07:05 صبح
اینم جواب سئوال دوم:
Public Function ShToMi(ByVal pDate As String) As String
pDate = pDate.Trim
If pDate = String.Empty Then Return (Shamsi_Now())
If pDate.IndexOf(":") > 0 Then pDate = Left(pDate, pDate.IndexOf(" "))
If pDate.Length = 8 And Val(pDate) < 100 Then pDate = "13" & pDate.Trim
Dim splt() As String = Split(pDate, "/") : Dim _YY As UShort = Val(splt(0)) : Dim _MM As Byte = Val(splt(1)) : Dim _DD As Byte = Val(splt(2))
Return (GPC.ToDateTime(_YY, _MM, _DD, TimeOfDay.Hour, TimeOfDay.Minute, TimeOfDay.Second, TimeOfDay.Millisecond).ToString("yyyy/MM/dd"))
End Function 'ShToMi() As String تبدیل تاریخ شمسی به میلادی

Public Function shDateDiff(pDate1 As String, pDate2 As String) As Long
Dim Value As Long = 0
Value = DateDiff(DateInterval.Day, CDate(ShToMi(pDate1)), CDate(ShToMi(pDate2)), FirstDayOfWeek.Saturday, FirstWeekOfYear.System)
Return Value
End Function 'روزهای بین 2 تاریخ شمسی را برمیگرداند



موفق باشید .....

saeedgoodboy
یک شنبه 02 اسفند 1394, 07:03 صبح
واقعا ممنونم .

ngpsa_900
جمعه 18 خرداد 1403, 15:08 عصر
بسيار متشكرم