在淘汰赛foreach声明中格式化日期

时间:2014-02-13 21:19:22

标签: knockout.js

我遇到了从淘汰赛模型中格式化日期字段的问题:

<table class="signatures">
    <tbody data-bind="foreach: $root.signatures()">
        <tr>
            <td><span data-bind="text: DateSigned"></span></td>
        </tr>
    </tbody>
</table>

这是我得到的结果:

/Date(-62135571600000)/ 

1 个答案:

答案 0 :(得分:4)

你所拥有的是一个Javascript日期,它只是1970年1月1日以来的毫秒数。你需要创建一个格式化程序,将javascript日期格式化为用户更可读的东西。

根据您使用UTC日期的不同,您需要在格式化之前检查用户的本地,或者让用户知道您的日期所在的时区。

以下是javascript固有的所有函数的MDN article,您可以在日期对象上执行这些函数。

所以,我会创建一个日期函数,为您设置日期格式。

function formatDate(odate) {
  var date = ko.util.unwrapObservable(odate);
  var year = date.getYear();
  var month = date.getMonth() + 1;
  var day = date.getDate();
  return year + '/' + month + '/' + day;
}

然后在你的视图中你可以:

<table class="signatures">
    <tbody data-bind="foreach: $root.signatures()">
        <tr>
            <td><span data-bind="text: formatDate(DateSigned)"></span></td>
        </tr>
    </tbody>
</table>