You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8项目中如何用JS将Algolia返回的秒数转成时分格式

Laravel 8中Algolia秒数转时分格式的JS实现

1. 编写秒数转时分的工具函数

先写一个通用的JS函数,处理秒到时分的转换逻辑,同时兼容异常值:

function formatSecondsToHoursMinutes(seconds) {
    // 处理null、非数字、负数等异常情况
    if (seconds == null || isNaN(seconds) || seconds < 0) {
        return '未知时长';
    }

    const hours = Math.floor(seconds / 3600);
    const remainingSeconds = seconds % 3600;
    const minutes = Math.floor(remainingSeconds / 60);

    let result = '';
    if (hours > 0) {
        result += `${hours}小时`;
    }
    // 没有小时时至少显示分钟,有小时但分钟为0则省略分钟
    if (minutes > 0 || hours === 0) {
        result += `${minutes}分钟`;
    }

    return result.trim();
}

2. 在show.blade.php中处理静态渲染数据

如果创作者数据是页面加载时已通过Laravel传递到模板的,直接在模板中调用函数转换:

<!-- 假设$creator是从Algolia拉取后传入模板的对象 -->
<div class="creator-card">
    <h2>{{ $creator->name }}</h2>
    <p>时长:<span class="duration-text">{{ $creator->length }}</span></p>
</div>

<script>
// 复制上面的formatSecondsToHoursMinutes函数到这里
function formatSecondsToHoursMinutes(seconds) {
    if (seconds == null || isNaN(seconds) || seconds < 0) {
        return '未知时长';
    }

    const hours = Math.floor(seconds / 3600);
    const remainingSeconds = seconds % 3600;
    const minutes = Math.floor(remainingSeconds / 60);

    let result = '';
    if (hours > 0) {
        result += `${hours}小时`;
    }
    if (minutes > 0 || hours === 0) {
        result += `${minutes}分钟`;
    }

    return result.trim();
}

// 页面加载完成后批量转换时长
document.addEventListener('DOMContentLoaded', () => {
    document.querySelectorAll('.duration-text').forEach(el => {
        const seconds = parseInt(el.textContent.trim(), 10);
        el.textContent = formatSecondsToHoursMinutes(seconds);
    });
});
</script>

3. 异步拉取Algolia数据的动态处理

如果是用Algolia JS客户端异步拉取数据,直接在渲染时调用转换函数:

// 初始化Algolia客户端(替换成你的凭证)
const client = algoliasearch('YOUR_APP_ID', 'YOUR_SEARCH_API_KEY');
const index = client.initIndex('creators');

// 搜索并渲染数据
index.search('创作关键词', { hitsPerPage: 10 })
.then(({ hits }) => {
    const container = document.getElementById('creators-list');
    container.innerHTML = hits.map(creator => `
        <div class="creator-item">
            <h3>${creator.name}</h3>
            <p>时长:${formatSecondsToHoursMinutes(creator.length)}</p>
        </div>
    `).join('');
});

内容的提问来源于stack exchange,提问作者iguner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 06:35:30