В моем коде я пытаюсь обрабатывать ZoneLocalMapping.ResultType.Abiguous. ЛинияКак правильно обрабатывать ZoneLocalMapping.ResultType.Ametiguous?
unambiguousLocalDateTime = localDateTimeMapping.EarlierMapping;
выбрасывает InvalidOperationException с сообщением «EarlierMapping свойство не должно быть названо в результате типа неоднозначные».
У меня нет ни малейшего понятия, как мне с этим справиться. Можете ли вы привести мне пример?
Это то, что мой код выглядит следующим образом:
public Instant getInstant(int year, int month, int day, int hour, int minute)
{
var localDateTime = new LocalDateTime(year, month, day, hour, minute); //invalidated, might be not existing
var timezone = DateTimeZone.ForId(TimeZoneId); //TimeZone is set elsewhere, example "Brazil/East"
var localDateTimeMapping = timezone.MapLocalDateTime(localDateTime);
ZonedDateTime unambiguousLocalDateTime;
switch (localDateTimeMapping.Type)
{
case ZoneLocalMapping.ResultType.Unambiguous:
unambiguousLocalDateTime = localDateTimeMapping.UnambiguousMapping;
break;
case ZoneLocalMapping.ResultType.Ambiguous:
unambiguousLocalDateTime = localDateTimeMapping.EarlierMapping;
break;
case ZoneLocalMapping.ResultType.Skipped:
unambiguousLocalDateTime = new ZonedDateTime(localDateTimeMapping.ZoneIntervalAfterTransition.Start, timezone);
break;
default:
throw new InvalidOperationException(string.Format("Unexpected mapping result type: {0}", localDateTimeMapping.Type));
}
return unambiguousLocalDateTime.ToInstant();
}
Если я смотрю на класс ZoneLocalMapping я вижу следующий код:
/// <summary>
/// In an ambiguous mapping, returns the earlier of the two ZonedDateTimes which map to the original LocalDateTime.
/// </summary>
/// <exception cref="InvalidOperationException">The mapping isn't ambiguous.</exception>
public virtual ZonedDateTime EarlierMapping { get { throw new InvalidOperationException("EarlierMapping property should not be called on a result of type " + type); } }
Вот почему я получаю исключение, но то, что я должен сделать, чтобы получить раннее копирование?
Прохладный! Большое спасибо. – RWC
(В данный момент) последний источник можно найти здесь: http://code.google.com/p/noda-time/source/checkout – RWC