표준 준수 방식으로 .NET에서 DateTime 객체를 직렬화하려면 어떻게합니까?

StackOverflow https://stackoverflow.com/questions/752446

문제

내 목표는 .NET DateTime 객체 (C#)를 사용하고 표준을 준수하는 방식으로 문자열 (XML에서 사용)에 직렬화되고 구문 분석됩니다. 내가 생각하는 특정 표준은 날짜와 시간을 나타내는 ISO 8601 표준입니다.

연결이 쉬운 솔루션 (바람직하게는 하나의 메소드 호출은 각각의 방법으로 호출)을 원합니다. 또한 현지 시간대 정보를 보존하고 싶습니다.

다음은 내가 얻고 싶은 문자열의 예입니다.

2009-04-15T10 : 55 : 03.0174-05 : 00

내 대상 .NET 버전은 3.5입니다.

실제로 몇 년 전 사용자 정의 형식과 DateTime.toString (String) 메소드가 포함되는이 문제에 대한 해결책을 찾았습니다. 더 간단한 표준 준수 솔루션이 존재하지 않는 것에 놀랐습니다. 사용자 정의 형식 문자열을 사용하여 표준을 준수하고 구문 분석하는 것은 나에게 약간 냄새가납니다.

도움이 되었습니까?

해결책

다행히도 있습니다 XmlConvert.ToString() 그리고 XmlConvert.ToDateTime() 이 형식을 처리합니다.

string s = XmlConvert.ToString(DateTime.Now,
     XmlDateTimeSerializationMode.Local);
DateTime dt = XmlConvert.ToDateTime(s,
     XmlDateTimeSerializationMode.Local);

(적절한 직렬화 모드 선택)

다른 팁

dateObj.toString ( "S")은 ISO 8601- 호환 문자열 표현을 얻을 수 있으며, 이로 인해 dateTime.parse ()로 사형화 될 수 있습니다.

지난 몇 년 동안 .NET 이이 점에서 약간 개선 된 것 같습니다. 그만큼 System.xml.xmlconvert 객체는이 맥락에서 나타나는 전체 클래스의 요구를 해결하도록 설계된 것 같습니다. 다음 기능은 DateTime 객체의 변환을 유연하고 표준 준수 방식으로 처리하도록 특별히 설계된 것으로 보입니다.

XmlConvert.ToDateTime(string, System.Xml.XmlDateTimeSerializationMode)


XmlConvert.ToString(DateTime, System.Xml.XmlDateTimeSerializationMode)

다음 열거 회원은 원래 시간대 정보를 보존하려는 경우 특히 유용합니다.

System.Xml.XmlDateTimeSerializationMode.RoundtripKind

다음은 MSDN의 기능에 대한 문서화에 대한 링크입니다.

xmlconvert.todateTime (String, system.xml.xmldateTimeserializationMode)

xmlconvert.toString (dateTime, system.xml.xmldateTimeserializationMode)

이 시도:

System.Xml.XmlConvert.ToString(TimeStamp, System.Xml.XmlDateTimeSerializationMode.Utc))
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top