我的 C# 服务器端模型有一个 TimeSpan 属性(用于存储一天中的时间),在 Breeze 检索时,该属性作为时间跨度的 ISO 文字返回。因此,9hrs (09:00) 的 TimeSpan 返回为“PT9H”。将其转换为更用户友好的 09:00 字符串(将受 UI 时间选择器小部件约束)的最佳方法是什么?
我正在使用 Knockout 绑定到我的 HTML 元素。
我的 C# 服务器端模型有一个 TimeSpan 属性(用于存储一天中的时间),在 Breeze 检索时,该属性作为时间跨度的 ISO 文字返回。因此,9hrs (09:00) 的 TimeSpan 返回为“PT9H”。将其转换为更用户友好的 09:00 字符串(将受 UI 时间选择器小部件约束)的最佳方法是什么?
我正在使用 Knockout 绑定到我的 HTML 元素。
我发现处理 ISO 8601 持续时间的最佳解决方案是对 moment.js 库使用 moment-isoduration 插件。回购:https ://github.com/dordille/moment-isoduration
使用您的示例:
var duration = moment.duration.fromIsoduration('PT9H');
这将返回一个具有 _milliseconds 属性的持续时间对象,因此调用
moment.utc(duration._milliseconds).format('hh:mm')
应该返回“09:00”