В .NET, как получить порядок YYYY, MM и DD для данной культуры - PullRequest
5 голосов
/ 11 октября 2011

Разработка независимого от культуры ввода даты рождения, состоящего из трех вариантов: год, месяц и день.

В .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 ]

3 голосов
/ 11 октября 2011

Вот, пожалуйста:

CultureInfo c = ....;
var dtf = c.DateTimeFormat;
var fs = dtf.ShortDatePattern;
2 голосов
/ 11 октября 2011

Используйте CurrentUICulture. Э.Г.

CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern

Даст вам шаблон, затем вам нужно будет определить порядок отображения.

...