2009-10-06 1 views
2

필자는 필자가 아직 작업하지 않았던 고유 한 Datetime 형식을 요구하는 사양으로 작업하고 있습니다. 공정시3자를 표시하기 위해 DateTime 또는 TimeZone/TimeZoneInfo를 포맷하려면 어떻게합니까?

, OFX (1하지 2) 날짜이 같은 형식 (DTCLIENT 또는 DTSERVER 중) 도장해야
20071015021529.000

그러나, 실시 예에 도시되어

20071015021529.000[-8:PST]  

나는 0123을 얻는 방법을 나는조차 알아낼 수

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

의 문을 사용하여 첫 번째 문제가 없습니다 올바른 오프셋을 얻으려면을 입력하십시오.

세 문자로 구성된 표준 시간대 코드는 내가 속임수를 쓰고 있습니다. NET에서 이것을 얻을 수있는 쉬운 방법이 있나요? 아니면 내가 출력 할 코드를 작성하고 필요한 것을 파싱 할 것입니까?

+0

@Jon Skeet 현재 온라인 뱅킹 사이트에서 다운로드 할 수있는 ofx 데이터를 살펴보면 GMT로 변환하고 각 DT 엔터티의 클라이언트로 플러시하는 것이 일반적인 방법이라고 말할 수 있습니다. @Mahin TimeZoneInfo를 살펴 보았습니다.이 데이터에 대한 클라이언트를 구현해야한다면 GMT와 함께 사용할 것입니다. @Daniel Pryden 나는 클라이언트의 로케일 프로세스를 가지고 있으며 서버에서 Universal Time 스탬프를 제시하는 것이 가장 좋습니다. 모두에게 감사드립니다! –

답변

2

정확하게 필요한 3 자 코드를 찾아야합니다. Europe/Paris은 무엇을 제공합니까? 개인적으로 표준 시간대 정보를 보존해야하는 경우가 아니면 실제로 데이터를 UTC로 변환하여 형식을 지정합니다.

5

3 자 표준 시간대 코드는 국가별로 고유하지 않으며 완전히 표준화되지 않았습니다. 예를 들어 "CST"는 "Central Standard Time (USA)"또는 "Chinese Standard Time"의 약어 일 수 있습니다. 귀하의 지역에 따라 올바른 것입니다.

제 생각에 .NET Framework에는 이와 같은 코드를 조회 할 수있는 기능이 없으므로 직접 구현해야합니다.

또한 (이 사실을 잘 알고있을 수도 있지만)이 기능을 구현하는 방법에주의해야합니다. UTC 오프셋과 표준 시간대 코드는 반드시 일대일로 대응해야하는 것은 아닙니다. 예를 들어, UTC-0700은 미국 산 표준시 (MST) 또는 미국 태평양 일광 절약 시간 (PDT) 일 수 있습니다.

4

r을 사용하면 RFC 형식이 제공됩니다. 도움이 될까요?

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

check this SO link도 도움이 될 수 있습니다.