在.NET中,如何获取给定文化的YYYY,MM和DD的顺序

时间:2011-10-11 12:53:38

标签: .net date cultureinfo

设计独立于文化的生日输入,包括三个选择:年,月和日。

在.NET中,如何为给定的文化获得三者的正确显示顺序,即:

┌─────────────┬─┐  ┌──────────────┬─┐  ┌────────────┬─┐
│ Select year │v│  │ Select month │v│  │ Select day │v│  
└─────────────┴─┘  └──────────────┴─┘  └────────────┴─┘

┌─────────────┬─┐  ┌──────────────┬─┐  ┌────────────┬─┐
│ Select day  │v│  │ Select month │v│  │ Select year│v│  
└─────────────┴─┘  └──────────────┴─┘  └────────────┴─┘

┌─────────────┬─┐  ┌──────────────┬─┐  ┌────────────┬─┐
│ Select month│v│  │ Select day   │v│  │ Select year│v│  
└─────────────┴─┘  └──────────────┴─┘  └────────────┴─┘

*更新* 感谢大家的回答,这让我想出了这个小功能:

  Public Function GetDateElementAtPos(ByVal pos As Integer) As String
    Return Mid(Me.myCultureInfo.DateTimeFormat.ShortDatePattern.Split(Me.myCultureInfo.DateTimeFormat.DateSeparator)(pos), 1, 1).ToLower
  End Function

myCultureInfo表示已初始化的Globalization.CultureInfo。我这样用它:

Dim s as new stringbuilder
For i As Integer = 0 To 2
  Select Case GetDateElementAtPos(i)
    Case "y"
      s.append(**year select html goes here**)
    Case "m"
      s.append(**month select html goes here**)
    Case "d"
      s.append(**day select html goes here**)
  End Select
Next 

2 个答案:

答案 0 :(得分:3)

你走了:

CultureInfo c = ....;
var dtf = c.DateTimeFormat;
var fs = dtf.ShortDatePattern;

答案 1 :(得分:2)

使用CurrentUICulture。 E.g。

CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern

会给你模式,然后你需要从显示顺序中解决。