我的数据库中有大量日期,并以12/18/2013
现在我必须将其更改为日期,如1392/09/27
。
有什么要转换的吗?(获取农历日期并将其更改为日期)
我需要在vb.net中
答案 0 :(得分:3)
System.Globalization命名空间包含number of different calendars。
您可以通过在一个日历中创建日期,然后从其他日历中获取日期,月份和年份来进行转换。
Sub Main()
Dim gregorianDate = DateTime.Parse("12/18/2013")
Dim solarCalendar = New PersianCalendar()
Dim solarDay = solarCalendar.GetDayOfMonth(gregorianDate)
Dim solarMonth = solarCalendar.GetMonth(gregorianDate)
Dim solarYear = solarCalendar.GetYear(gregorianDate)
Console.WriteLine("{0}/{1}/{2}", solarYear, solarMonth, solarDay)
Console.Read()
End Sub
输出:
1392年9月27日
经过一番计算后,PersianCalendar会返回您正在寻找的“太阳能”日期。
答案 1 :(得分:1)
您可以在解析日期/时间时指定要使用的区域性,如下所示:
Dim parsedDateTime As Date = Date.Parse("12/18/2013", CultureInfo.GetCultureInfo("en-US"))
您还可以指定在将日期/时间格式化为字符串时要使用的区域性,如下所示:
Dim formatted As String = parsedDateTime.ToString("yyyy/mm/dd", CultureInfo.GetCultureInfo("th"))
因此,您可以通过组合这两个步骤从一种文化转换为另一种文化,如下所示:
Public Function ConvertDateStringToCulture(dateString As String, fromCulture As String, toCulture As String) As String
Dim parsedDateTime As Date = Date.Parse(dateString, CultureInfo.GetCultureInfo(fromCulture))
Dim formatted As String = parsedDateTime.ToString("yyyy/mm/dd", CultureInfo.GetCultureInfo(toCulture))
Return formatted
End Function
然后,例如,如果您想要从美国日期转换为泰国日期,您可以这样做:
Dim converted As String = ConvertDateStringToCulture("12/18/2013", "en-US", "th")
然而,你需要选择合适的文化来往往。 Here is a list支持的文化。