ماهو الخطأ فى هذا الكود
Imports System.Web
Imports System.Diagnostics
Imports System.Globalization
Imports System.Data
Imports System.Collections
Namespace Dates_conv
Public Class Dates
Private cur As HttpContext
Private Const startGreg As Integer = 1900
Private Const endGreg As Integer = 2100
Private allFormats As String() = {"yyyy/MM/dd", "yyyy/M/d", "dd/MM/yyyy", "d/M/yyyy", "dd/M/yyyy", "d/MM/yyyy", _
"yyyy-MM-dd", "yyyy-M-d", "dd-MM-yyyy", "d-M-yyyy", "dd-M-yyyy", "d-MM-yyyy", _
"yyyy MM dd", "yyyy M d", "dd MM yyyy", "d M yyyy", "dd M yyyy", "d MM yyyy"}
Private arCul As CultureInfo
Private enCul As CultureInfo
Private h As HijriCalendar
Private g As GregorianCalendar
Public Sub New()
cur = HttpContext.Current
arCul = New CultureInfo("ar-SA")
enCul = New CultureInfo("en-US")
h = New HijriCalendar()
g = New GregorianCalendar(GregorianCalendarTypes.USEnglish)
arCul.DateTimeFormat.Calendar = h
End Sub
''' <summary>
''' Check if string is hijri date and then return true
''' </summary>
''' <param name="hijri"></param>
''' <returns></returns>
Public Function IsHijri(ByVal hijri As String) As Boolean
If hijri.Length <= 0 Then
cur.Trace.Warn("IsHijri Error: Date String is Empty")
Return False
End If
Try
Dim tempDate As DateTime = DateTime.ParseExact(hijri, allFormats, arCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces)
If tempDate.Year >= startGreg AndAlso tempDate.Year <= endGreg Then
Return True
Else
Return False
End If
Catch ex As Exception
cur.Trace.Warn("IsHijri Error :" & hijri.ToString() & vbLf & ex.Message)
Return False
End Try
End Function
''' <summary>
''' Check if string is Gregorian date and then return true
''' </summary>
''' <param name="greg"></param>
''' <returns></returns>
Public Function IsGreg(ByVal greg As String) As Boolean
If greg.Length <= 0 Then
cur.Trace.Warn("IsGreg :Date String is Empty")
Return False
End If
Try
Dim tempDate As DateTime = DateTime.ParseExact(greg, allFormats, enCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces)
If tempDate.Year >= startGreg AndAlso tempDate.Year <= endGreg Then
Return True
Else
Return False
End If
Catch ex As Exception
cur.Trace.Warn("IsGreg Error :" & greg.ToString() & vbLf & ex.Message)
Return False
End Try
End Function
''' <summary>
''' Return Formatted Hijri date string
''' </summary>
''' <param name="date"></param>
''' <param name="format"></param>
''' <returns></returns>
Public Function FormatHijri(ByVal [date] As String, ByVal format As String) As String
If [date].Length <= 0 Then
cur.Trace.Warn("Format :Date String is Empty")
Return ""
End If
Try
Dim tempDate As DateTime = DateTime.ParseExact([date], allFormats, arCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces)
Return tempDate.ToString(format, arCul.DateTimeFormat)
Catch ex As Exception
cur.Trace.Warn("Date :" & vbLf & ex.Message)
Return ""
End Try
End Function
''' <summary>
''' Returned Formatted Gregorian date string
''' </summary>
''' <param name="date"></param>
''' <param name="format"></param>
''' <returns></returns>
Public Function FormatGreg(ByVal [date] As String, ByVal format As String) As String
If [date].Length <= 0 Then
cur.Trace.Warn("Format :Date String is Empty")
Return ""
End If
Try
Dim tempDate As DateTime = DateTime.ParseExact([date], allFormats, enCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces)
Return tempDate.ToString(format, enCul.DateTimeFormat)
Catch ex As Exception
cur.Trace.Warn("Date :" & vbLf & ex.Message)
Return ""
End Try
End Function
''' <summary>
''' Return Today Gregorian date and return it in yyyy/MM/dd format
''' </summary>
''' <returns></returns>
Public Function GDateNow() As String
Try
Return DateTime.Now.ToString("yyyy/MM/dd", enCul.DateTimeFormat)
Catch ex As Exception
cur.Trace.Warn("GDateNow :" & vbLf & ex.Message)
Return ""
End Try
End Function
''' <summary>
''' Return formatted today Gregorian date based on your format
''' </summary>
''' <param name="format"></param>
''' <returns></returns>
Public Function GDateNow(ByVal format As String) As String
Try
Return DateTime.Now.ToString(format, enCul.DateTimeFormat)
Catch ex As Exception
cur.Trace.Warn("GDateNow :" & vbLf & ex.Message)
Return ""
End Try
End Function
''' <summary>
''' Return Today Hijri date and return it in yyyy/MM/dd format
''' </summary>
''' <returns></returns>
Public Function HDateNow() As String
Try
Return DateTime.Now.ToString("yyyy/MM/dd", arCul.DateTimeFormat)
Catch ex As Exception
cur.Trace.Warn("HDateNow :" & vbLf & ex.Message)
Return ""
End Try
End Function
''' <summary>
''' Return formatted today hijri date based on your format
''' </summary>
''' <param name="format"></param>
''' <returns></returns>
Public Function HDateNow(ByVal format As String) As String
Try
Return DateTime.Now.ToString(format, arCul.DateTimeFormat)
Catch ex As Exception
cur.Trace.Warn("HDateNow :" & vbLf & ex.Message)
Return ""
End Try
End Function
''' <summary>
''' Convert Hijri Date to it's equivalent Gregorian Date
''' </summary>
''' <param name="hijri"></param>
''' <returns></returns>
Public Function HijriToGreg(ByVal hijri As String) As String
If hijri.Length <= 0 Then
cur.Trace.Warn("HijriToGreg :Date String is Empty")
Return ""
End If
Try
Dim tempDate As DateTime = DateTime.ParseExact(hijri, allFormats, arCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces)
Return tempDate.ToString("yyyy/MM/dd", enCul.DateTimeFormat)
Catch ex As Exception
cur.Trace.Warn("HijriToGreg :" & hijri.ToString() & vbLf & ex.Message)
Return ""
End Try
End Function
''' <summary>
''' Convert Hijri Date to it's equivalent Gregorian Date and return it in specified format
''' </summary>
''' <param name="hijri"></param>
''' <param name="format"></param>
''' <returns></returns>
Public Function HijriToGreg(ByVal hijri As String, ByVal format As String) As String
If hijri.Length <= 0 Then
cur.Trace.Warn("HijriToGreg :Date String is Empty")
Return ""
End If
Try
Dim tempDate As DateTime = DateTime.ParseExact(hijri, allFormats, arCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces)
Return tempDate.ToString(format, enCul.DateTimeFormat)
Catch ex As Exception
cur.Trace.Warn("HijriToGreg :" & hijri.ToString() & vbLf & ex.Message)
Return ""
End Try
End Function
''' <summary>
''' Convert Gregoian Date to it's equivalent Hijir Date
''' </summary>
''' <param name="greg"></param>
''' <returns></returns>
Public Function GregToHijri(ByVal greg As String) As String
If greg.Length <= 0 Then
cur.Trace.Warn("GregToHijri :Date String is Empty")
Return ""
End If
Try
Dim tempDate As DateTime = DateTime.ParseExact(greg, allFormats, enCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces)
Return tempDate.ToString("yyyy/MM/dd", arCul.DateTimeFormat)
Catch ex As Exception
cur.Trace.Warn("GregToHijri :" & greg.ToString() & vbLf & ex.Message)
Return ""
End Try
End Function
''' <summary>
''' Convert Hijri Date to it's equivalent Gregorian Date and return it in specified format
''' </summary>
''' <param name="greg"></param>
''' <param name="format"></param>
''' <returns></returns>
Public Function GregToHijri(ByVal greg As String, ByVal format As String) As String
If greg.Length <= 0 Then
cur.Trace.Warn("GregToHijri :Date String is Empty")
Return ""
End If
Try
Dim tempDate As DateTime = DateTime.ParseExact(greg, allFormats, enCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces)
Return tempDate.ToString(format, arCul.DateTimeFormat)
Catch ex As Exception
cur.Trace.Warn("GregToHijri :" & greg.ToString() & vbLf & ex.Message)
Return ""
End Try
End Function
''' <summary>
''' Return Gregrian Date Time as digit stamp
''' </summary>
''' <returns></returns>
Public Function GTimeStamp() As String
Return GDateNow("yyyyMMddHHmmss")
End Function
''' <summary>
''' Return Hijri Date Time as digit stamp
''' </summary>
''' <returns></returns>
Public Function HTimeStamp() As String
Return HDateNow("yyyyMMddHHmmss")
End Function
''' <summary>
''' Compare if the Hijri date between other financial year and return True if within , False in not within
''' </summary>
''' <param name="dt">Data Table contain start date and end date ,,start date is the first column in table , end date is the second column in table</param>
''' <param name="fromDate"></param>
''' <param name="endDate"></param>
''' <returns></returns>
''' <summary>
''' Compare two instaces of string date and return indication of thier values
''' </summary>
''' <param name="d1"></param>
''' <param name="d2"></param>
''' <returns>positive d1 is greater than d2,negative d1 is smaller than d2, 0 both are equal</returns>
Public Function Compare(ByVal d1 As String, ByVal d2 As String) As Integer
Try
Dim date1 As DateTime = DateTime.ParseExact(d1, allFormats, arCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces)
Dim date2 As DateTime = DateTime.ParseExact(d2, allFormats, arCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces)
Return DateTime.Compare(date1, date2)
Catch ex As Exception
cur.Trace.Warn("Compare :" & vbLf & ex.Message)
Return -1
End Try
End Function
End Class
End Namespace