如何将日期转换为日期?在.net中

时间:2013-12-18 16:43:44

标签: .net vb.net

我的数据库中有大量日期,并以12/18/2013

这样的格式保存

现在我必须将其更改为日期,如1392/09/27

有什么要转换的吗?(获取农历日期并将其更改为日期)

我需要在vb.net中

2 个答案:

答案 0 :(得分:3)

.NET中的

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支持的文化。