#.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. Спасибо, хороший ответ — принятые были на несколько минут раньше