Сведения о вопросе

Mathprofi

16:03, 1st July, 2020

Теги

Локализация дескрипторов формата даты

Просмотров: 482   Ответов: 7

Что является лучшим способом, чтобы локализовать формат даты, дескриптора?

Как знает любой человек из культуры, которая не использует формат mm/dd/yyyy, раздражает необходимость вводить даты в этом формате. То.NET framework обеспечивает очень хорошую поддержку локализации, поэтому тривиально анализировать даты в соответствии с культурой пользователей, но вы часто хотите также отобразить полезную подсказку относительно требуемого формата (особенно для различения yy и yyyy, которые взаимозаменяемы в большинстве культур).

Каков наилучший способ сделать это таким образом, чтобы иметь смысл для большинства пользователей (например, dd/M/yyy сбивает с толку из-за изменения регистра и переключения между одной и двумя буквами).



  Сведения об ответе

park

18:03, 1st July, 2020

Просто используйте ISO-8601 . Это международный стандарт.

Date and time (current at page generation) expressed according to ISO 8601:
Date:                           2014-07-05
Combined date and time in UTC:  2014-07-05T04:00:25+00:00
                                2014-07-05T04:00:25Z
Week:                           2014-W27
Date with week number:          2014-W27-6
Ordinal date:                   2014-186


  Сведения об ответе

PROGA

18:03, 1st July, 2020

Я должен согласиться с OP 'wrong' датами действительно jar с моим DD/MM/YYYY воспитанием, и я нахожу ISO 8601 датами и временем чрезвычайно легко работать. На этот раз Стандарт получил это право, и у engtech есть очевидный ответ, который не требует локализации.

Я собирался сообщить о форме ввода дня рождения в Stack overflow как об ошибке из-за того, насколько больной палец это для большинства людей в мире.


  Сведения об ответе

PIRLO

18:03, 1st July, 2020

Вот мой текущий метод. Есть предложения?

Regex singleMToDoubleRegex = new Regex("(?<!m)m(?!m)");
Regex singleDToDoubleRegex = new Regex("(?<!d)d(?!d)");
CultureInfo currentCulture = CultureInfo.CurrentUICulture;

// If the culture is netural there is no date pattern to use, so use the default.
if (currentCulture.IsNeutralCulture)
{
    currentCulture = CultureInfo.InvariantCulture;
}

// Massage the format into a more general user friendly form.
string shortDatePattern = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern.ToLower();
shortDatePattern = singleMToDoubleRegex.Replace(shortDatePattern, "mm");
shortDatePattern = singleDToDoubleRegex.Replace(shortDatePattern, "dd");


  Сведения об ответе

lats

18:03, 1st July, 2020

Проблема с международными стандартами заключается в том, что их практически никто не использует. Я стараюсь, где могу, но я вынужден использовать dd/mm/yyyy почти везде в реальной жизни, что означает, что я настолько привык к нему, что всегда сознательно использую ISO-8601. Для большинства людей, которые даже не пытаются использовать ISO-8601, это еще хуже. Если вы можете интернационализировать, где вы можете, я думаю, что это большое преимущество.


  Сведения об ответе

VCe znayu

18:03, 1st July, 2020

Как насчет предоставления формата (mm/dd/yyyy или dd/mm/yyyy) с последующей распечаткой сегодняшней даты в культуре пользователя. MSDN имеет статью о форматировании DateTime для культуры человека, используя объект CultureInfo, который может быть полезен для этого. Сочетание формата (который знаком большинству людей) в сочетании с текущей датой, представленной в этом формате, должно быть достаточным ключом к человеку о том, как они должны ввести дату. (Также включите контроль календаря для тех, кто все еще не может понять это).


  Сведения об ответе

JUST___

18:03, 1st July, 2020

Короткая форма удобна и помогает избежать орфографических ошибок. Локализовать по мере необходимости, но обязательно отображать ожидаемый формат (не оставляйте пользователя слепым). Предоставьте элемент управления выбора даты в качестве дополнительного помощника для заполнения поля.

В качестве дополнительного, on-the-fly разбор и отображение даты в длинной форме также может помочь.


  Сведения об ответе

LAST

18:03, 1st July, 2020

Лучший вариант: вместо этого я бы рекомендовал использовать стандартный выбор даты.

Альтернатива: каждый раз, когда содержимое элемента управления редактирования изменяется, разберите его и отобразите (в отдельном элементе управления?) длинный формат даты (т. е.: input " 03/04/09 "display" Your input: March 4, 2009")


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться