JSON日期格式 - 仅显示时间
我有一个使用Bootstrap表的应用程序,其中一个字段是Time。当我从数据库中获取数据时,它以JSON格式进行编码,这个字段的数据类似于2016-11-07T13:40:29.000Z,我知道它是标准的JSON格式。JSON日期格式 - 仅显示时间
我想分解它,并在我的表中有一列显示日期,另一列显示时间,理想情况。但是如果我只能让Time列显示时间,我会很高兴。
我读过这是与添加一个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>
<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格式时,它们看起来都一样。再次感谢!!它真的有帮助 – user2843365
看来它可能与分钟少于10次的时间有关。 – user2843365
尝试新版本 – br3t
''2016-11-07T13:40:29.000Z'substring(11,16)' – Keith
如果您看到一个NaN异常,可能'值'输入字段不是日期,您可以放置一个控制台。记录(值)在你的功能,看看有什么问题 – Kalamarico