C# 序列化NodaTime.LocalTime时的可选秒数?

C# 序列化NodaTime.LocalTime时的可选秒数?,c#,serialization,iso8601,nodatime,localtime,C#,Serialization,Iso8601,Nodatime,Localtime,是否可以为NodaTime的LocalTime创建一个模式,该模式与?也就是说,你能让(分和)秒成为可选的吗,就像你能让分数秒成为可选的一样?我希望能够始终拥有小时和分钟,但仅在需要时添加所有其他内容。这在NodeTime中目前不存在,对于内置的DateTime和DateTimeOffset对象也不存在 也许你能做的最好的事情就是创建两个模式,并添加一些要使用的逻辑 var p1 = LocalTimePattern.ExtendedIsoPattern; var p2 = LocalTimeP

是否可以为NodaTime的LocalTime创建一个模式,该模式与?也就是说,你能让(分和)秒成为可选的吗,就像你能让分数秒成为可选的一样?我希望能够始终拥有小时和分钟,但仅在需要时添加所有其他内容。

这在NodeTime中目前不存在,对于内置的
DateTime
DateTimeOffset
对象也不存在

也许你能做的最好的事情就是创建两个模式,并添加一些要使用的逻辑

var p1 = LocalTimePattern.ExtendedIsoPattern;
var p2 = LocalTimePattern.CreateWithInvariantCulture("HH:mm");

// formatting
LocalTime t = // your input
var p = t.Second == 0 && t.TickOfSecond == 0 ? p2 : p1;
string s = t.Format(p);

// parsing
string s = // your input
var result = p1.Parse(s);
if (!result.Success)
    result = p2.Parse(s);
if (!result.Success)
    // throw some exception, etc.
LocalTime t = result.Value;

请注意,类似这样的解析代码已经存在,但现在是内部代码:我们可能会在某个时候公开它。。。