Localizando descritores de formato de data

votos
15

Qual é a melhor maneira de localizar um descritor de formato de data?

Como qualquer um de uma cultura que não usa o formato dd / mm / aaaa sabe, é chato ter de introduzir datas neste formato. O .NET framework fornece algum suporte muito bom localização, por isso é trivial para analisar datas de acordo com a cultura dos usuários, mas muitas vezes você também quiser exibir uma dica útil quanto ao formato requerido (especialmente para distinguir entre aa e aaaa, que é intercambiável em a maioria das culturas).

Qual é a melhor maneira de fazer isso de uma maneira que faz sentido para a maioria dos usuários (por exemplo, dd / M / yyy é confuso por causa da mudança no caso e a comutação entre uma e duas letras).

Publicado 03/08/2008 em 18:30
fonte usuário
Em outras línguas...                            


7 respostas

votos
6

Basta usar ISO-8601 . É um padrão internacional.

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
Respondeu 03/08/2008 em 19:18
fonte usuário

votos
4

Eu tenho que concordar com o OP 'errado' datas realmente frasco com minha DD / MM / AAAA educação e acho ISO 8601 datas e horários extremamente fácil de trabalhar. Pela primeira vez o padrão deu certo e EngTech tem a resposta óbvia que não necessita de localização.

Eu estava indo para relatar o formulário de entrada aniversário no estouro de pilha como um erro por causa de quanto de uma ferida polegar é que a maioria do mundo.

Respondeu 04/08/2008 em 19:50
fonte usuário

votos
2

Aqui é o meu método atual. Alguma sugestão?

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");
Respondeu 03/08/2008 em 18:31
fonte usuário

votos
1

A forma curta é conveniente e ajuda a evitar erros de ortografia. Localizar conforme o caso, mas certifique-se de exibir o formato esperado (não deixe os cegos usuário). Fornecer um controle data-seletor como um opcional assessor do preenchimento do campo.

Como, uma análise adicional on-the-fly e exibição da data em formato longo pode ajudar também.

Respondeu 04/08/2008 em 20:13
fonte usuário

votos
1

O problema com as normas internacionais é que praticamente ninguém usa-los. Eu tento sempre que posso, mas sou forçado a usar dd / mm / aaaa quase toda parte na vida real, o que significa que eu estou tão acostumado a isso é sempre um processo consciente de usar ISO-8601. Para a maioria das pessoas que nem sequer tentam usar ISO-8601 é ainda pior. Se você pode internacionalizar onde você pode, eu acho que é uma grande vantagem.

Respondeu 04/08/2008 em 09:14
fonte usuário

votos
1

Que tal dar o formato (mm / dd / aaaa ou dd / mm / aaaa), seguido de uma impressão de data de hoje na cultura do usuário. MSDN tem um artigo sobre a formatação de um DateTime para a cultura da pessoa , usando o objeto CultureInfo que pode ser útil em fazer isto. Uma combinação do formato (que a maioria das pessoas estão familiarizados com), combinada com a data atual representada nesse formato deve ser o suficiente de uma pista para a pessoa sobre como devem introduzir a data. (Também incluem um controle de calendário para aqueles que ainda não pode descobrir isso).

Respondeu 03/08/2008 em 18:37
fonte usuário

votos
0

Melhor opção : eu, em vez recomendo usar um selecionador de data padrão.

Alternativa : cada vez que o conteúdo das alterações controle de edição, analisá-lo e exibir (em um controle separado?) A longo formato da data (ou seja: de entrada "03/04/09" display "Você inseriu: 4 Março, 2009" )

Respondeu 19/09/2008 em 18:02
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more