我在sql中有一个表,其中日期格式存储在Hijri中。现在我正在开发一个vb.net应用程序,我必须让用户更新该dateField。
因此,如果我放置一个datepicker(以Gregorian为单位)并且用户选择日期并在更新之前将其转换为Hijri日期,那么这是可能的。我的意思是当用户选择日期并单击保存按钮时,日期应该在sql中以hijri格式更新。
目前,用户正在tms AdvEdit上手动输入日期。
是否有任何代码可用于完成此任务。提前感谢您的所有时间和考虑。
答案 0 :(得分:4)
以下代码将根据传递的参数转换为Gregorian / Hijri:
Public Function ConvertDateCalendar(ByVal DateConv As DateTime,
ByVal Calendar As String, ByVal DateLangCulture As String) As String
Dim DTFormat As DateTimeFormatInfo
DateLangCulture = DateLangCulture.ToLower()
''' We can't have the hijri date writen in English. We will get a runtime error - LAITH - 11/13/2005 1:01:45 PM -
If Calendar = "Hijri" AndAlso DateLangCulture.StartsWith("en-") Then
DateLangCulture = "ar-sa"
End If
''' Set the date time format to the given culture - LAITH - 11/13/2005 1:04:22 PM -
DTFormat = New System.Globalization.CultureInfo(DateLangCulture, False).DateTimeFormat
''' Set the calendar property of the date time format to the given calendar - LAITH - 11/13/2005 1:04:52 PM -
Select Case Calendar
Case "Hijri"
DTFormat.Calendar = New System.Globalization.HijriCalendar()
Exit Select
Case "Gregorian"
DTFormat.Calendar = New System.Globalization.GregorianCalendar()
Exit Select
Case Else
Return ""
End Select
''' We format the date structure to whatever we want - LAITH - 11/13/2005 1:05:39 PM -
DTFormat.ShortDatePattern = "dd/MM/yyyy"
Return (DateConv.[Date].ToString("f", DTFormat))
End Function
快乐的编码!!!!!
答案 1 :(得分:1)
亲爱的艾哈迈德,.net提供一个PersianCalendar类,为您完成此任务。
您只需要从PersianCalendar创建一个实例并使用它。所有方法都比较熟悉,如
System.Globalization.PersianCalendar pc = new PersianCalendar();
pc.GetDayOfMonth(YourDate); // and so on
请注意,所有.net库都是相同的,您可以在每种.Net平台语言中使用它们(如VB,C#等),所有这些都将编译为CLR,所以只需创建一个实例并骑行。
我还强烈建议您将格鲁吉亚日期存储到您的数据库中,当您想要显示日期,将其转换为波斯语或任何其他日历时,这可以让您更简化应用程序的全球化。
请注意,Microsoft将Hijri Shamsi日历添加为.Net 4作为一种日历,您无需再在.net 4.0中进行转换
好运