C# 序列化NodaTime.LocalTime时的可选秒数?
是否可以为NodaTime的LocalTime创建一个模式,该模式与?也就是说,你能让(分和)秒成为可选的吗,就像你能让分数秒成为可选的一样?我希望能够始终拥有小时和分钟,但仅在需要时添加所有其他内容。这在NodeTime中目前不存在,对于内置的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
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;
请注意,类似这样的解析代码已经存在,但现在是内部代码:我们可能会在某个时候公开它。。。