WithIsoIntervalConverter() 和 WithIsoDateIntervalConverter() 有什么区别?
What is the difference between WithIsoIntervalConverter() and WithIsoDateIntervalConverter()?
我最近开始使用它附带的 NodaTime, and wanted to use the JSON.NET serializer settings。然而,有一件事我不明白,也没有在文档中找到。
据我了解,现在存在以下内容:
ConfigureForNodaTime()
// Disable automatic conversion of anything that looks like a date and time to BCL types.
settings.DateParseHandling = DateParseHandling.None;
converters.Add(NodaConverters.InstantConverter);
converters.Add(NodaConverters.IntervalConverter);
converters.Add(NodaConverters.LocalDateConverter);
converters.Add(NodaConverters.LocalDateTimeConverter);
converters.Add(NodaConverters.LocalTimeConverter);
converters.Add(NodaConverters.DateIntervalConverter);
converters.Add(NodaConverters.OffsetConverter);
converters.Add(NodaConverters.CreateDateTimeZoneConverter(provider));
converters.Add(NodaConverters.DurationConverter);
converters.Add(NodaConverters.RoundtripPeriodConverter);
converters.Add(NodaConverters.OffsetDateTimeConverter);
converters.Add(NodaConverters.CreateZonedDateTimeConverter(provider));
.WithIsoIntervalConverter()
ReplaceExistingConverters<Interval>(settings.Converters, NodaConverters.IsoIntervalConverter);
.WithIsoDateIntervalConverter()
ReplaceExistingConverters<DateInterval>(settings.Converters, NodaConverters.IsoDateIntervalConverter);
我不清楚的是,我必须在 WithIsoIntervalConverter
和 WithIsoDateIntervalConverter
之间进行选择,还是需要像 ConfigureForNodaTime().WithIsoIntervalConverter().WithIsoDateIntervalConverter()
一样同时使用两者?或者我根本不需要使用它们中的任何一个而只使用 ConfigureForNodaTime()
?
WithIsoIntervalConverter
替换 Interval
类型的转换器。
WithIsoDateIntervalConverter
替换 DateInterval
类型的转换器。
如果您不使用 Interval
或 DateInterval
,您将不会关心转换器如何处理它们。如果您正在 使用其中一种或两种类型,则需要考虑如何将它们序列化。
以 DateInterval
为例,默认序列化格式(由 ConfigureForNodaTime
配置)生成 JSON,如下所示:
"value": { "Start": "2018-03-15" End: "2018-04-01" }
但是,如果您尝试与需要日期间隔的 ISO 表示的代码进行互操作,则可以使用 WithIsoDateIntervalConverter()
,序列化数据将如下所示:
"value": "2018-03-15/2018-04-01"
我最近开始使用它附带的 NodaTime, and wanted to use the JSON.NET serializer settings。然而,有一件事我不明白,也没有在文档中找到。
据我了解,现在存在以下内容:
ConfigureForNodaTime()
// Disable automatic conversion of anything that looks like a date and time to BCL types.
settings.DateParseHandling = DateParseHandling.None;
converters.Add(NodaConverters.InstantConverter);
converters.Add(NodaConverters.IntervalConverter);
converters.Add(NodaConverters.LocalDateConverter);
converters.Add(NodaConverters.LocalDateTimeConverter);
converters.Add(NodaConverters.LocalTimeConverter);
converters.Add(NodaConverters.DateIntervalConverter);
converters.Add(NodaConverters.OffsetConverter);
converters.Add(NodaConverters.CreateDateTimeZoneConverter(provider));
converters.Add(NodaConverters.DurationConverter);
converters.Add(NodaConverters.RoundtripPeriodConverter);
converters.Add(NodaConverters.OffsetDateTimeConverter);
converters.Add(NodaConverters.CreateZonedDateTimeConverter(provider));
.WithIsoIntervalConverter()
ReplaceExistingConverters<Interval>(settings.Converters, NodaConverters.IsoIntervalConverter);
.WithIsoDateIntervalConverter()
ReplaceExistingConverters<DateInterval>(settings.Converters, NodaConverters.IsoDateIntervalConverter);
我不清楚的是,我必须在 WithIsoIntervalConverter
和 WithIsoDateIntervalConverter
之间进行选择,还是需要像 ConfigureForNodaTime().WithIsoIntervalConverter().WithIsoDateIntervalConverter()
一样同时使用两者?或者我根本不需要使用它们中的任何一个而只使用 ConfigureForNodaTime()
?
WithIsoIntervalConverter
替换 Interval
类型的转换器。
WithIsoDateIntervalConverter
替换 DateInterval
类型的转换器。
如果您不使用 Interval
或 DateInterval
,您将不会关心转换器如何处理它们。如果您正在 使用其中一种或两种类型,则需要考虑如何将它们序列化。
以 DateInterval
为例,默认序列化格式(由 ConfigureForNodaTime
配置)生成 JSON,如下所示:
"value": { "Start": "2018-03-15" End: "2018-04-01" }
但是,如果您尝试与需要日期间隔的 ISO 表示的代码进行互操作,则可以使用 WithIsoDateIntervalConverter()
,序列化数据将如下所示:
"value": "2018-03-15/2018-04-01"