어제 우루과이가 자신의 시계를 변경 전환, 그 시간대에 대한 특정 시간을 변환 할 때 지금은 예외를보고 계속 :NodaTime - 시간이 지나면 오류
ERROR Exception: - DateTime ConvertTimeToUtc(DateTime, String) (05/10/2014 02:31:00, America/Montevideo)
NodaTime.SkippedTimeException: Specified argument was out of the range of valid values.
Parameter name: Local time 05/10/2014 02:31:00 is invalid in time zone America/Montevideo
나는 현지 시간이 잘못 될 수있는 방법을 이해 :
"예를 들어 시간대가 오전 2시에 진행된다고 가정하면 01:59:59 이후의 초는 03:00:00이되고 02:30:00과 같은 현지 시간은 결코 발생하지 않습니다."
그러나 내가 알지 못하는 것 (그리고 아마도 더 많은 커피가 필요합니다)이 이유는 NodaTime이 이것을 설명하지 않는 이유입니까? 02:31이 현재 현지 시간이 잘못되었음을 인식하지 못합니까? 아니면이 문제를 처리하기 위해 추가 처리를해야합니까?
기능 내가 전화 해요 :
var timeZone = DateTimeZoneProviders.Tzdb[timezoneName];
var localTime = LocalDateTime.FromDateTime(timeToConvert).InZoneStrictly(timeZone);;
return DateTime.SpecifyKind(localTime.ToDateTimeUtc(), DateTimeKind.Utc);
답변 해 주셔서 감사합니다. 질문에 호출하는 함수를 추가했습니다. 이제는 UTC로 현지 시간을 변환 할 때 오류가 발생한다는 것을 이해합니다. 처음에 현지 시간을 얻기 위해 다른 것을해야합니까? – FBryant87
@ FBryant87 : 솔직히 말해서, 당신이 달성하고자하는 것이 무엇인지 명확하게 밝히지 않았습니다 - 어디서'timeToConvert'를 얻었습니까? 어떤 경우에는 합리적인 데이터 일 수 있습니다. 매일 오전 2시 30 분에 반복되는 이벤트가있는 경우 ... 하루에 2 시간 30 분이 0 또는 2 번 발생하는 날의 의미를 알아 내야합니다. –
감사합니다. 업데이트 된 답변에서 조금 더 설명 하겠지만 InZoneLeniently에서 읽어 볼 것입니다. – FBryant87