Pagination 使用momente.js+jQuery数据表(带分页)本地化Unix时间值
我正在使用和。具体来说,我有一个单元格列表,所有单元格都包含一个Unix时间戳 我想做的是根据用户的时区将此时间戳转换为用户的本地化时间 我可以使时区本地化,但它只适用于表中的第一组分页结果……如果导航到另一个页面,时间戳仍然显示为原始unix值 我做了一个例子来说明 有没有人能告诉我1是否有更好的方法来完成我正在做的事情2我如何能够在搜索表2排序表3分页等操作之后定位我的时间 万分感谢 我的JS: 我的HTMLPagination 使用momente.js+jQuery数据表(带分页)本地化Unix时间值,pagination,datatables,momentjs,Pagination,Datatables,Momentjs,我正在使用和。具体来说,我有一个单元格列表,所有单元格都包含一个Unix时间戳 我想做的是根据用户的时区将此时间戳转换为用户的本地化时间 我可以使时区本地化,但它只适用于表中的第一组分页结果……如果导航到另一个页面,时间戳仍然显示为原始unix值 我做了一个例子来说明 有没有人能告诉我1是否有更好的方法来完成我正在做的事情2我如何能够在搜索表2排序表3分页等操作之后定位我的时间 万分感谢 我的JS: 我的HTML 好的,幸好这比我想象的要容易 工作 希望这对别人有帮助 我的最新JS 在DataT
好的,幸好这比我想象的要容易 工作 希望这对别人有帮助 我的最新JS
在DataTable的drawCallback中添加您的函数调用,或者更好的是,在相关列中添加一个呈现函数。谢谢@HatteringMouse。我刚刚发布了一个答案,它使用了数据呈现,并且似乎工作得足够体面。
// Do Datatables
$('.my-datatable').DataTable({
"order": [[ 1, 'desc' ],],
"aoColumnDefs": [
{ "bSortable": false, "aTargets": [ 0 ] }
]
});
// Loop through class to localize unix time based on user's time zone
function localizeTime(){
$( ".localize_time" ).each(function() {
if (typeof moment !== 'undefined' && $.isFunction(moment)) {
var userMomentTz = moment().format("Z");
var userTimeZone = userMomentTz.replace(":", "");
var elementSiteUnixTimeText = $(this).find('.localize_time_unix').text();
var elementSiteUnixTimeVal = parseInt(elementSiteUnixTimeText.trim());
if (userTimeZone.substring(0, 1) == "-") {
var userTimeZoneHr = parseInt(userTimeZone.substring(1,3));
var userTimeZoneMin = parseInt(userTimeZone.slice(-2));
var userTimeOffset = (userTimeZoneHr + '.' + (userTimeZoneMin/60))*(-1);
} else {
var userTimeZoneHr = parseInt(userTimeZone.substring(0,2));
var userTimeZoneMin = parseInt(userTimeZone.slice(-2));
var userTimeOffset = userTimeZoneHr + '.' + (userTimeZoneMin/60);
}
var momentDateUserOffset = moment.unix(elementSiteUnixTimeVal).utcOffset(userTimeOffset);
var momentDateFormattedOffset = moment(momentDateUserOffset).format('ddd, D MMM YYYY, h:mm A');
$(this).find('.localize_time_display').text(momentDateFormattedOffset);
};
});
};
// Run time localization function
if ( $( ".localize_time" ).length ) {
localizeTime()
};
<table class="my-datatable">
<thead>
<tr>
<th>Time</th>
<th>Stuff</th>
</tr>
</thead>
<tbody>
<tr>
<td>Stuff</td>
<td>
<span class="localize_time">
<span class="localize_time_unix">UNIX Time n++</span>
<span class="localize_time_display"></span>
</span>
</td>
</tr>
</tbody>
</table>
// Do Datatables
$('.my-datatable').DataTable( {
"order": [[ 1, 'desc' ],],
"columnDefs": [{
"targets": 1,
"render": function (data, type, full, meta) {
if (typeof moment !== 'undefined' && $.isFunction(moment)) {
var userMomentTz = moment().format("Z");
var userTimeZone = userMomentTz.replace(":", "");
var elementSiteUnixTimeText = data;
var elementSiteUnixTimeVal = parseInt(elementSiteUnixTimeText.trim());
if (userTimeZone.substring(0, 1) == "-") {
var userTimeZoneHr = parseInt(userTimeZone.substring(1,3));
var userTimeZoneMin = parseInt(userTimeZone.slice(-2));
var userTimeOffset = (userTimeZoneHr + '.' + (userTimeZoneMin/60))*(-1);
} else {
var userTimeZoneHr = parseInt(userTimeZone.substring(0,2));
var userTimeZoneMin = parseInt(userTimeZone.slice(-2));
var userTimeOffset = userTimeZoneHr + '.' + (userTimeZoneMin/60);
}
var momentDateUserOffset = moment.unix(elementSiteUnixTimeVal).utcOffset(userTimeOffset);
var momentDateFormattedOffset = moment(momentDateUserOffset).format('ddd, D MMM YYYY, h:mm A');
$(this).find('.localize_time_display').text(momentDateFormattedOffset);
return momentDateFormattedOffset;
};
}
}]
} );