밀리 초가있는 ParseExact에서 문자열이 유효한 DateTime으로 인식되지 않았습니다.
Nov 23 2020
문자열 형식의 날짜가 있는데 DateTime으로 변환해야합니다. 이것은 내 코드입니다.
DateTime dt = DateTime.ParseExact("2018-04-09T09:27:07.247+02:00", "YYYY-MM-DDTHH:mm:ss.SSSZ", System.Globalization.CultureInfo.InvariantCulture).ToUniversalTime();
Console.WriteLine(TimeZoneInfo.ConvertTimeFromUtc(dt, TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time")).ToString());
2020-08-27T00 : 00 : 00 + 02 : 00과 같은 날짜와 함께 작동하지만 밀리 때문에 스크립트에있는 날짜와 같은 날짜에는 작동하지 않습니다. 날짜 패턴을 어떻게 변경해야합니까? 나는 그들 중 많은 것을 시도했지만 해결하지 못했습니다.
답변
4 John Nov 23 2020 at 13:53
코드에 세 가지 문제가 있습니다.
- 형식 문자열은 대소 문자를 구분합니다 (yyyy는 4 자리 연도를 나타내며 YYYY는 그렇지 않습니다. 마찬가지로 dd는 2 자리 일을 나타내지 만 DD는 그렇지 않습니다).
.sss
.fff
밀리 초 여야합니다 .- Z (Zulu)를 예상하고 있지만 실제로 시간 오프셋 ( "+02 : 00")을 얻고 있습니다. 이것은 형식 문자열이 날짜 시간 문자열과 다르다는 것을 의미합니다.
DateTime.ParseExact
ISO8601 datetimes에 대해 신경 쓰지 말고 대신 DateTimeOffset
's를 Parse
사용하십시오 (시간 오프셋을 따르고 ISO8601 datetimes와 함께 작동합니다).
DateTimeOffset dt = DateTimeOffset.Parse("2018-04-09T09:27:07.247+02:00", System.Globalization.CultureInfo.InvariantCulture).ToUniversalTime();
Console.WriteLine(TimeZoneInfo.ConvertTimeFromUtc(dt.DateTime, TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time")).ToString());