Pagination 使用momente.js+jQuery数据表(带分页)本地化Unix时间值

Pagination 使用momente.js+jQuery数据表(带分页)本地化Unix时间值,pagination,datatables,momentjs,Pagination,Datatables,Momentjs,我正在使用和。具体来说,我有一个单元格列表,所有单元格都包含一个Unix时间戳 我想做的是根据用户的时区将此时间戳转换为用户的本地化时间 我可以使时区本地化,但它只适用于表中的第一组分页结果……如果导航到另一个页面,时间戳仍然显示为原始unix值 我做了一个例子来说明 有没有人能告诉我1是否有更好的方法来完成我正在做的事情2我如何能够在搜索表2排序表3分页等操作之后定位我的时间 万分感谢 我的JS: 我的HTML 好的,幸好这比我想象的要容易 工作 希望这对别人有帮助 我的最新JS 在DataT

我正在使用和。具体来说,我有一个单元格列表,所有单元格都包含一个Unix时间戳

我想做的是根据用户的时区将此时间戳转换为用户的本地化时间

我可以使时区本地化,但它只适用于表中的第一组分页结果……如果导航到另一个页面,时间戳仍然显示为原始unix值

我做了一个例子来说明

有没有人能告诉我1是否有更好的方法来完成我正在做的事情2我如何能够在搜索表2排序表3分页等操作之后定位我的时间

万分感谢

我的JS:

我的HTML


好的,幸好这比我想象的要容易

工作

希望这对别人有帮助

我的最新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;
            }; 
        }
    }]
} );