Pergunta

Estou trabalhando com uma especificação que exige um formato peculiar DateTime com o qual ainda não tive que trabalhar.

No momento do processo, um OFX (1 não 2) DateTime deve ser carimbado (dtclient ou dtserver) em um formato como este:
20071015021529.000

No entanto, nos exemplos, é mostrado:

20071015021529.000[-8:PST]    

Não tenho problemas com o primeiro usando uma declaração de

DateTime.Now.ToString("yyyyMMddHHmmss.fff")

Eu posso até descobrir como conseguir %z Para obter o deslocamento correto.

O código do fuso horário de três letras é onde estou tropeçando. Existe uma maneira fácil de obter isso no .NET, ou vou acabar escrevendo código para produzir e analisar o que preciso?

Foi útil?

Solução

Você precisa descobrir exatamente quais códigos de três letras precisam. O que seria Europe/Paris dar, por exemplo? Pessoalmente, eu converteria os dados para o UTC e os formava dessa maneira, a menos que você realmente precise preservar as informações do fuso horário.

Outras dicas

Os códigos de fuso horário de três letras não são únicos entre os países e não são completamente padronizados. Por exemplo, "CST" pode ser a abreviação de "Time Standard Time (EUA)" ou "Tempo padrão chinês". O que está correto depende do seu local.

Que eu saiba, não há funcionalidade incorporada na estrutura .NET para procurar códigos como este, então você precisará implementá -la por conta própria.

Além disso (mas você provavelmente sabe disso), precisa ter cuidado com a forma como implementa essa funcionalidade. Não há necessariamente uma correspondência individual entre as compensações UTC e os códigos de fuso horário. Por exemplo, o UTC-0700 pode ser o tempo padrão da montanha dos EUA (MST) ou Hora do dia do Pacífico dos EUA (PDT).

Se você usar o R, ele lhe dará formato RFC. Vai te ajudar.

String.Format("{0:r}", dt);  // "Sun, 09 Mar 2008 16:05:07 GMT"   RFC1123

Você também pode Verifique este link So, se pode ajudá -lo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top