代码之家  ›  专栏  ›  技术社区  ›  Nakul Chaudhary

如何用文字转换日期?

  •  1
  • Nakul Chaudhary  · 技术社区  · 16 年前

    我想在Vb.net中转换英文单词中的日期。
    例如:2008年5月26日至2008年5月26日

    3 回复  |  直到 16 年前
        1
  •  1
  •   AnthonyWJones    16 年前

    这可能是最好的方法:-

    private static string[] dayText = new string[]
    {"First", "Second", "Third", "Fourth", "Fifth", "Sixth", "Seventh", "Eighth",
     "Nineth", "Tenth", "Eleventh", "Twelveth", "Thirteenth", "Fourteenth", "Fifteenth",
      "Sixteenth", "Seventeenth", "Eighteenth", "Nineteenth", "Twentieth", "Twenty first",
     "Twenty second", "Twenty third", "Twenty fourth", "Twenty fifth", "Twenty sixth",
     "Twenty seventh", "Twenty eighth", "Twenty nineth", "Thirtieth", "Thirty first"};
    
    public static string DayInWords(int day)
    {
        //assertion code here
        return dayText[day-1];
    }
    
    ...
    string result = DayInWords(myDate.Day) + myDate.ToString(" MMM yyyy");
    
        2
  •  0
  •   hawbsl    16 年前

    我不知道有什么内置功能。但是只有31天的时间来考虑。构造一个手动用单词替换1到31的函数是很容易的。然后附加月份和年份,如中所示:

    Function foobar(ByVal mydate As Date) As String
    
    Dim result As String = ""
    Select Case mydate.Day
        Case 1
            result = "First"
            Case 2
                result = "Second"
            Case 3
                result = "Third"
    
            ... etc ...
    
            Case 31
            result = "Thirty-First"
    End Select
    Return result & " " & mydate.ToString("MMMM yyyy")
    End Function
    
        3
  •  0
  •   Konamiman    16 年前

    事实上,考虑到可能的数字数量很少,硬编码可能是最简单的解决方法。但如果您不想这样做,请查看以下资源:

    http://xl.barasch.com/cCo11432.htm
    http://www.vb-helper.com/howto_net_number_to_words2.html

    推荐文章