я заметил, что из дат, связанных с типами - LocalDate, LocalDateTime, OffsetDateTime, ZonedDateTime - только LocalDate принимает эру в качестве параметра строительства:Эра в NodaTime
public LocalDate(int year, int month, int day);
public LocalDate(Era era, int yearOfEra, int month, int day, [NotNullAttribute] CalendarSystem calendar);
Являются ли конструкторы, основанные только на эпохе, предоставленными только в качестве удобства? И если да, то почему он не распространяется на другие типы, которые ограничивают конструкторы значениями, не относящимися к эпохе? Например:
public LocalDateTime(int year, int month, int day, int hour, int minute);
Все типы имеют неизменный параметр Era. Насколько я могу судить, единственный способ повлиять на Эра в других типах - это календарь, используемый во время строительства.
Может кто-нибудь объяснить этот выбор дизайна?
Ответ дает ясность и имеет смысл. И только для того, чтобы убедиться, что я полностью настроен: Можно ли предположить, что эпоха могла быть исключена из строительства вообще без потери функциональности, которую можно было бы повторно захватить с помощью дополнительных методов? Например, свойство 'LocalDate.YearOfEra' будет заменено на' LocalDate.YearOfEra (Era) '. – Tomcat
@Tomcat: Нет, важно иметь возможность легко создавать даты в заданную эпоху, хотя это относительно нишевой вариант использования. Метод 'LocalDate.YearOfEra (Era)' не смог бы построить «LocalDate», и это не имело бы большого смысла, поскольку вам нужно было знать первую эру ... не похоже, что вы можете представить дата в 123BC и спросить, какой его год в эпоху AD ... –