I'm going to respond to this slightly differently than Jon did. I welcome any counterarguments.
Is there a reason why the NodaTime JSON.net serializer does not use the ISO8601 Time Interval format to express the start and end instants?
Yes. By keeping the start and end points of the interval as separate values, they are individually addressable by any JSON parser. Since each instant of the interval is expressed in UTC (with the "Z" ending), then they are individually sortable as well.
This makes it quite easy to perform range queries in JSON-based databases, such as in RavenDB. (See also RavenDB-NodaTime)
It also allows to quickly compute validity (start <= end) and duration (end-start) without having to break out of JSON and split the string.
The ISO interval format could work here, but it would not be as convenient from a JSON perspective.
Is the ISO8601 format just not a good fit for the interval concept in NodaTime?
It's a great fit for Noda Time. It's just not a great fit for JSON. I would expect that Interval.ToString()
and related text patterns for Noda Time would use the ISO format. If they don't, then there's something to work on for a future release.