【问题标题】:JSON Date format - display time onlyJSON 日期格式 - 仅显示时间
【发布时间】:2017-03-26 06:03:24
【问题描述】:

我有一个使用引导表的应用程序,其中一个字段是时间。当我从数据库中获取数据时,它以 JSON 格式编码,并且该字段的数据类似于 2016-11-07T13:40:29.000Z,我知道这是标准 JSON 格式。

我想把它分开,让我的表格中的一列显示日期,另一列显示时间,理想情况下。但如果我能让时间列只显示时间,我会很高兴。

我已经读到这与将 dataFormatter 添加到列标题有关,但我似乎无法使其工作,因为我的 javascript 返回 NaN。

这是我在研究问题时发现的代码。我是 Javascript 新手,所以这里可能有一些错误,我希望能得到一些帮助。

<table id="table"  data-url ="http://maccdx161012:4567/api/v1/sat" data-toggle="table">
    <thead>
        <tr>

           <th data-field="initials">Initials</th>
            <th data-field="sector">Sector</th>
            <th data-field="cjs">CJS</th>
            <th data-field="satin" data-formatter="timeFormatter">In</th> 
            <th data-field="satout">Out</th> 
            <th data-field="duration">Duration</th> 
            <th data-field="position">Position</th>
            <th data-field="ot">OT</th>             
        </tr>
    </thead>
 </table>
<script>
    function timeFormatter(value) {
        var date = new Date(value*1000);
        var hours = date.getHours();
        var minutes = "0" + date.getMinutes();

        return hours + ':' + minutes.substr(-2);
    }
</script>

【问题讨论】:

  • '2016-11-07T13:40:29.000Z'.substring(11,16)
  • 如果您看到 NaN 异常,可能 'value' 输入字段不是日期,您可以在函数中放置一个 console.log(value) 以查看问题所在

标签: javascript bootstrap-table


【解决方案1】:
<script>
    function timeFormatter(value) {
        var date = new Date(value);
        var hours = date.getHours();
        var minutes = leadZero(date.getMinutes());

        return hours + ':' + minutes;
    }
    function dateFormatter(value) {
        var date = new Date(value);
        var years = date.getFullYear();
        var months = leadZero(date.getMonth() + 1);
        var days = leadZero(date.getDate());

        return years + '-' + months + '-' + days;
    }
    function leadZero(n) { return n>9 ? n : "0" + n; }
</script>

它将返回您当地时区的时间。如果您不想要此功能,请使用 Keith 的解决方案。

【讨论】:

  • 这似乎完全按照我的意愿工作,但有一个问题。我有一次看起来像这样:16:39 或 15:32,这很棒。但其中一些看起来像这样:16:0 或 18:0。知道为什么这可能会发生在一些但不是全部身上吗?当我删除代码并返回 JSON 格式时,它们看起来都一样。再次感谢!!真的很有帮助
  • 看来这可能与分钟小于 10 的时间有关。
  • 试用新版本
  • 太棒了!非常感谢!
  • 我不想问,但我会 :) 例如,如何仅检索日期部分并将其显示为 2016-11-11?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
相关资源
最近更新 更多