2

我的 C# 服务器端模型有一个 TimeSpan 属性(用于存储一天中的时间),在 Breeze 检索时,该属性作为时间跨度的 ISO 文字返回。因此,9hrs (09:00) 的 TimeSpan 返回为“PT9H”。将其转换为更用户友好的 09:00 字符串(将受 UI 时间选择器小部件约束)的最佳方法是什么?

我正在使用 Knockout 绑定到我的 HTML 元素。

4

1 回答 1

5

我发现处理 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”

于 2013-12-10T14:30:06.330 回答