В .NET, как мне получить порядок ГГГГ, ММ и ДД для данной культуры

#.net #date #cultureinfo

#.net #Дата #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 
  

Комментарии:

1. Рад, что вы нашли решение Muleskinner, если это для веб-приложения, убедитесь, что вы используете CurrentUICulture , в противном случае вы вернете культуру сервера IIS.

2. @Tony Leeper Да, это для веб-приложения, и да, я знаю, спасибо. Он используется за авторизацией пользователя, и пользователь сам выбрал свою культуру

Ответ №1:

Вот и все:

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

Ответ №2:

Используйте текущую культуру. Например.

 CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern
  

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

Комментарии:

1. Спасибо, хороший ответ — принятые были на несколько минут раньше