我的日期格式如下,我的目的是将其转换为更加用户友好的格式(例如: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;
};
P.S。我希望在1分钟前获得时间格式,如果间隔太低,那么我想看看刚才。
答案 0 :(得分:2)
如果所有纪元的间隔小于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'
}
};