Problema simples em relação aos formatos de data

4

Estamos hospedando um site que, quando acessado localmente, carrega muito bem, mas se você acessá-lo externamente, verá

Conversion from string "1/15/2010 8:46:01 AM" to type 'Date' is not valid.

O que eu altero no servidor para corrigir isso. Ao navegar pelo site no servidor, ele funciona, embora eu esteja conectado ao servidor como um usuário diferente daquele no IIS.

Qualquer ideia está começando a causar dor de cabeça agora.

    
por Massimo 15.01.2010 / 14:23

7 respostas

1

Provavelmente tem a ver com o local que você está usando com a conversão. Talvez externamente o formato do Reino Unido esteja sendo usado, mas internamente o formato dos EUA é usado. Certifique-se de especificar o formato exato que você espera ao converter a string para uma data.

    
por 15.01.2010 / 14:28
1

Eu gostaria de ver o código que está causando problemas, mas "1/15/2010 8:46:01 AM" é uma data válida na codificação en-US. Certifique-se de estar usando a cultura en-US; não assuma baseado na máquina que você está usando para desenvolvimento / teste. Além disso, se as sequências DateTime forem baseadas em entradas, considere os casos em que o usuário pode substituir a cultura atual através do Painel de Controle.

Veja um exemplo de da MSDN :

string dateString;
CultureInfo culture;
DateTimeStyles styles;
DateTime dateResult;

// Parse a date and time with no styles.
dateString = "03/01/2009 10:00 AM";
culture = CultureInfo.CreateSpecificCulture("en-US");
styles = DateTimeStyles.None;
if (DateTime.TryParse(dateString, culture, styles, out dateResult))
   Console.WriteLine("{0} converted to {1} {2}.", 
                     dateString, dateResult, dateResult.Kind);
else
   Console.WriteLine("Unable to convert {0} to a date and time.", 
                     dateString);
    
por 15.01.2010 / 14:38
1

Parece que a mudança no sistema operacional que você precisa é entrar no painel de controle > Regional & Opções de idioma > Padrões & Formatos > Defina a lista suspensa Idioma para Inglês (Reino Unido) e Local para o Reino Unido.

O ideal é que o código use Datas de invariância da cultura para contornar esses problemas junto com métodos de formatação de data .

    
por 15.01.2010 / 14:39
1

Desde que você mencionou em um comentário sobre uma das outras respostas que de algumas máquinas ele funciona, enquanto em outras não, isso sugere que o problema pode estar no cliente.

Ao navegar na web, seu navegador fornece ao servidor um conjunto de códigos aceitos / preferidos.

Você deve dar uma olhada nessas configurações nas máquinas onde as coisas funcionam e compará-las com as configurações nas máquinas onde elas não funcionam. Pode ser que algumas máquinas tenham mudado de solicitar uma localidade do Reino Unido para solicitar uma localidade dos EUA (ou vice-versa).

    
por 17.01.2010 / 20:36
1

Fonte ou nenhuma fonte, se for um aplicativo ASP.NET, você pode alterar a cultura do web.config para a correta - veja esta pergunta e o comentário para minha resposta .

<system.web>
 <globalization culture="en-US" uiCulture="en-US" />
<system.web />

Como a configuração do sistema operacional é por usuário, você terá alguns problemas ao tentar alterá-lo usando o painel de controle do SO - portanto, tentar alterá-lo no aplicativo como acima é geralmente mais fácil e mais robusto.

    
por 06.05.2010 / 11:16
0

A localidade do servidor ou banco de dados foi definida para EUA (como mês / dia / ano é uma data de formato dos EUA), mas o código está esperando uma data no formato do Reino Unido (dia / mês / ano).

Verifique isso e verifique se eles combinam e que tudo deve ficar bem.

    
por 15.01.2010 / 14:38
0

Dê uma olhada em Como alterar o local padrão do servidor
Você poderia tentar isso setlocale.exe arquivo para configurá-lo

00000409 para inglês (EUA).
00000809 para inglês (UK).

Lista completa aqui

    
por 15.01.2010 / 14:44