To answer the question as asked: no, there is no Noda Time type that you can use to directly represent the concept of "year" or "year and month".
(Well, for completeness, I should note that you could probably use Period
, but I think it would be pretty confusing to use a calendrical duration to represent a date, and somewhat of an abuse of what Period
is meant to be used for.)
Were I to do this myself, I'd probably create a type that aggregated a Noda Time LocalDate
(storing "year 2013" as 2013-01-01) together with an enum that recorded which parts of the date were valid (i.e. Year
, YearMonth
, or YearMonthDay
), and then implement IComparer<MyPartialLocalDate>
to order the dates as-needed (by delegating to the LocalDate
, then using the enum to break ties, probably).