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

时间:2016-12-20 13:32:56

标签: c# serialization iso8601 nodatime localtime

是否可以为NodaTime的LocalTime创建一个匹配ISO 8601 standard for times的模式?也就是说,你可以选择(分钟和)秒,就像你可以选择小数秒吗?我希望能够总是有几小时和几分钟,但只在需要时添加其他所有内容。

1 个答案:

答案 0 :(得分:1)

目前在NodaTime中不存在,对于内置的DateTimeDateTimeOffset对象,它也不存在an option

你可以做的最好的事情就是创建两个模式并添加一些可以使用的逻辑。

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;