javascript - 将日期转换为用户友好格式时出错

标签 javascript jquery

我有以下格式的日期,我的目的是将其转换为对用户更友好的格式(例如:5 分钟前)。

2017-05-07 18:23:56

为此,我有以下代码。一切正常,但当记录是新的时,我收到错误消息。我尝试修改代码,但只碰壁了。有人可以帮帮我吗?

var DURATION_IN_SECONDS = {
epochs: ['year', 'month', 'day', 'hour', 'minute'],
year: 31536000,
month: 2592000,
day: 86400,
hour: 3600,
minute: 60
};

function getDuration(seconds) {
  var epoch, interval;
 for (var i = 0; i < DURATION_IN_SECONDS.epochs.length; i++) {
epoch = DURATION_IN_SECONDS.epochs[i];
interval = Math.floor(seconds / DURATION_IN_SECONDS[epoch]);
if (interval >= 1) {
  return {
    interval: interval,
    epoch: epoch
  };
}
}
};

function timeSince(date) {
 var seconds = Math.floor((new Date() - new Date(date)) / 1000);
 var duration = getDuration(seconds);
 var suffix = (duration.interval > 1 || duration.interval === 0) ? 's' : '';
 return duration.interval + ' ' + duration.epoch + suffix;
 };

附言我想以 1 分钟前的格式获取时间,如果间隔太短,那么我想看看刚才。

最佳答案

如果所有时期的间隔都小于 1,则不会从 getDuration() 返回任何内容。

尝试下一个代码:

function getDuration(seconds) {
    var epoch, interval;

    for (var i = 0; i < DURATION_IN_SECONDS.epochs.length; i++) {
        epoch = DURATION_IN_SECONDS.epochs[i];
        interval = Math.floor(seconds / DURATION_IN_SECONDS[epoch]);
        if (interval >= 1) {
            return {
                interval: interval,
                epoch: epoch
            }
        }
    }

    return {
        interval: '',
        epoch: 'Just now'
    }
};

关于javascript - 将日期转换为用户友好格式时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43831922/

相关文章:

javascript - Node.js 事件发射器源码讲解

javascript - 在 jquery 插件中使用 return on

Javascript获取所有下拉菜单的值

javascript - HTML-如何自动生成无限不同的模态?

javascript - ES6 模块导入和依赖管理

javascript - 是否可以将字符串数据从 javascript 传递到 html 文件?

c# - 如何在mvc中将复杂的键值参数从 View 传递到 Controller ?

jquery - 使用 Protovis 通过 JQuery 动态加载数据

jquery - 如何为视差站点制作全屏部分?

javascript - 实时计算进入下一步然后返回数字成为我最初设置的数字