Substituir o separador de data padrão no .net

votos
3

Eu tenho um servidor web localizado na Suíça e que se destina a servir a região da América ea região europeia. Quando uma data está a ser exibida a partir Américas, a data é separado por um período de, em vez de uma barra.

Em alguns casos eu quero usuário o período se eles são europeus, em outros eu quero usar a barra. Se eu especificar a cadeia de formato para usar uma barra, ele será convertido em um período com base nas configurações do computador. O que eu preciso fazer para especificar as configurações regionais em uma base por usuário (o usuário tem que entrar e eu sei que região ele está vindo).

Publicado 19/05/2009 em 13:43
fonte usuário
Em outras línguas...                            


4 respostas

votos
5

Globalização no ASP.NET deve fazer tudo para você praticamente. Veja este artigo MSDN , intitulado Como definir a cultura e Cultura UI para página Web ASP.NET Globalização . Este deve ser exatamente o que você quer, como você simplesmente precisa definir a cultura atual (UI) para o segmento atual quando o usuário efetuar login. Você pode então chamar date.ToString()e ele irá retornar a representação de texto no formato correto.

Equivalentemente, você poderia fazer algo parecido com isto:

var culture = System.Globalization.CultureInfo.GetCultureInfo("en-GB");
var dateString = date.ToString(culture.DateTimeFormat);

Mas é realmente apenas fazendo a mesma coisa manualmente, e é muito menos elegante. Assim como você pode fazer uso do quadro globalização ASP.NET aqui.

Respondeu 19/05/2009 em 13:50
fonte usuário

votos
3

Se a cultura atual usa o ponto como separador de data, então você pode exibir com uma barra usando

C #

date.ToString(@"dd\/MM\/yyyy");

VB

date.ToString("dd\/MM\/yyyy")
Respondeu 19/05/2009 em 13:48
fonte usuário

votos
2

Use uma seqüência de formato com DateTime.ToString(), como este:

 DateTime.Now.ToString("MM/dd/yyyy");

Neste caso, o caractere / significa "usar o separador de data para a cultura atual.". Mesmo melhor, você pode simplesmente chamar DateTime.Now.ToShortDateString()de usar o formato de data curta do sistema local.

Há mais ajuda com a localização no System.Globalizationespaço de nomes.

Ora aqui está o truque: o seu sistema 'local' é o seu servidor web, e isso significa que é praticamente sempre vai usar o formato suíço. Então você também quiser passar um IFormatProviderpara dizer ao sistema que a cultura de usar. Isso seria algo parecido com isto:

DateTime.Now.ToString(System.Globalization.CultureInfo.GetCultureInfo("en-US"));
Respondeu 19/05/2009 em 13:46
fonte usuário

votos
1

Eu não tive a necessidade de usá-lo, mas DateTime tem informações de cultura incorporada que você poderia usar:

DateTime dt = DateTime.Now;
dt.ToString(System.Globalization.CultureInfo.GetCultureInfo("fr-CH"));

Veja isso em MSDN . Basta gravar a cultura do seu usuário ( "fr-CH", "en-US", etc.), então você pode fazer mais do que apenas EUA v. Suíça.

Alternativamente Eu acredito que você pode criar sua própria informações de cultura para formatar datas corretamente, mas mais uma vez eu nunca tive que fazer isso.

Respondeu 19/05/2009 em 13:50
fonte usuário

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