2013-07-22 18 views
2

我的C#服務器端模型具有TimeSpan屬性(用於存儲一天中的時間),Breeze檢索時將其作爲時間跨度的ISO文本返回。因此9小時(09:00)的TimeSpan以「PT9H」的形式返回。什麼是最好的方式來將其轉換爲和更友好的09:00字符串(這將受到UI timepicker小部件的限制)?Breeze.js和TimeSpan ISO文字

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

+2

這不是已被合併,但最近在[moment.js](http://momentjs.com)中添加了用於ISO持續時間解析的[拉請求](https://github.com/moment/moment/pull/941)。因此,moment.js的* next *版本將能夠處理這個問題。 –

+0

因此,我會使用Knockout計算來執行與moment.js的轉換?你可以堅持你的評論在答案,所以我可以信任它?謝謝。 – SeeNoWeevil

+1

您也可以創建一個自定義綁定處理程序,在此期間將您的格式轉換爲9:00。這對於綁定處理程序來說是一個完美的場景 –

回答

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」

+0

此功能現在已合併到時刻庫中,因此該插件已被棄用 – Brent