VB.Net将日期格式从yy-mm-dd恢复为标准日期格式(dd.mm.yyyy)

时间:2016-08-16 20:20:07

标签: vb.net

所以我遇到了一些麻烦。我正在尝试将yy-mm-dd的日期格式转换回dd.mm.yyyy。我尝试用查找来做,但我可以得到如何只得到它的第二个条目。

Dim lookupDateYear = DateString.ToLookup(Function(l) If(Len(l) < 2, l, Mid(l, 1, 2)), Function(l) Split(l, "-", 3).first)
Dim lookupDateDay = DateString.ToLookup(Function(l) If(Len(l) < 2, l, Mid(l, 1, 2)), Function(l) Split(l, "-", 3).last)

3 个答案:

答案 0 :(得分:0)

第二个虽然正则表达式选项无效,因为初始字符串没有一年中的世纪 我们可能会在某些条件下使用它,但这会很麻烦且容易出错

这给我们留下了DateTime的东西:

  • 首先我们使用DateTime.ParseExact(或DateTime.TryParseExact)来...根据给定格式将字符串解析为DateTime对象
  • 然后我们使用DateTime.ToString重载,它需要我们想要的字符串格式。

离开了我们:

' CultureInfo requires an Imports of System.Globalization
Dim dt As DateTime = DateTime.ParseExact (DateString, "yy-MM-dd", CultureInfo.InvariantCulture)

Dim result As String = dt.ToString ("dd.MM.yyyy")

答案 1 :(得分:0)

不是最漂亮的,但却能胜任

    Dim parts = DateString.Split(New Char() {"-"c})
    Dim Year As String = "20" & parts(0)
    Dim Month As String = parts(1)
    Dim Day As String = parts(2)
    Dim result As String = (Day & "." & Month & "." & Year)

如果有人有更聪明的方法,我很期待看到这一点。

答案 2 :(得分:0)

你一定很难做到这一点。这应该更好地很多

DateTime.ParseExact(DateString, "yy-MM-dd", Nothing).ToString("dd/MM/yy")

请注意,此处的/字符是为给定文化定义的日期分隔符字符的占位符(在这种情况下,Nothing映射到您当前的默认文化。不变文化也经常有用)。如果区域性设置已将.定义为日期分隔符,则您会在输出中看到.而不是/。如果您想要.而不管日期分隔符,只需将其更改为使用格式字符串中的.代替/,或使用CultureInfo,{{ 1}}或DateTimeFormatInfo对象,其中IFormatProvider是日期分隔符。

根据您打算如何使用它,您也可以更好地保留日期对象,而不是在解析后将其转换回字符串。