您好,欢迎访问一九零五行业门户网

js实现时间显示几天前、几小时前或者几分钟前的方法集锦_javascript技巧

这里汇总了js实现时间显示几天前、几小时前或者几分钟前的常见方法。分享给大家供大家参考。具体如下:
方法一:
个人做法是保存时间戳,然后在前端用jq插件做转换,比如 smart-time-ago
方法二:
(通过freemarker模板)如果用freemarker模板可以这样写,别的模板类推
根据自己的意愿修改条件和输出,把你的datetime传进去即可
${(ct/31104000)?int}年前 ${(ct/2592000)?int}个月前 ${(ct/86400)?int}天前 昨天 ${(ct/3600)?int}小时前 ${(ct/60)?int}分钟前 ${ct?int}秒前 刚刚
方法三:
找到一个专门的插件prettytime
public static void main(string[] args) { prettytime p = new prettytime(); system.out.println(p.format(dateutils.adddays(new date(), 2)));}
方法四:
自定义java方法:
private final static long minute = 60 * 1000;// 1分钟 private final static long hour = 60 * minute;// 1小时 private final static long day = 24 * hour;// 1天 private final static long month = 31 * day;// 月 private final static long year = 12 * month;// 年 /** * 返回文字描述的日期 * * @param date * @return */ public static string gettimeformattext(date date) { if (date == null) { return null; } long diff = new date().gettime() - date.gettime(); long r = 0; if (diff > year) { r = (diff / year); return r + 年前; } if (diff > month) { r = (diff / month); return r + 个月前; } if (diff > day) { r = (diff / day); return r + 天前; } if (diff > hour) { r = (diff / hour); return r + 个小时前; } if (diff > minute) { r = (diff / minute); return r + 分钟前; } return 刚刚; }
方法五:
使用js插件:(原版的timeago.js)
// smart time ago v0.1.0 // copyright 2012, terry tai, pragmatic.ly // https://pragmatic.ly/ // licensed under the mit license. // https://github.com/pragmaticly/smart-time-ago/blob/master/license (function() { var timeago; timeago = (function() { function timeago(element, options) { this.startinterval = 60000; this.init(element, options); } timeago.prototype.init = function(element, options) { this.$element = $(element); this.options = $.extend({}, $.fn.timeago.defaults, options); this.updatetime(); return this.starttimer(); }; timeago.prototype.starttimer = function() { var self; self = this; return this.interval = setinterval((function() { return self.refresh(); }), this.startinterval); }; timeago.prototype.stoptimer = function() { return clearinterval(this.interval); }; timeago.prototype.restarttimer = function() { this.stoptimer(); return this.starttimer(); }; timeago.prototype.refresh = function() { this.updatetime(); return this.updateinterval(); }; timeago.prototype.updatetime = function() { var self; self = this; return this.$element.findandself(this.options.selector).each(function() { var timeagoinwords; timeagoinwords = self.timeagoinwords($(this).attr(self.options.attr)); return $(this).html(timeagoinwords); }); }; timeago.prototype.updateinterval = function() { var filter, newesttime, newesttimeinminutes, newesttimesrc; if (this.$element.findandself(this.options.selector).length > 0) { if (this.options.dir === up) { filter = :first; } else if (this.options.dir === down) { filter = :last; } newesttimesrc = this.$element.findandself(this.options.selector).filter(filter).attr(this.options.attr); newesttime = this.parse(newesttimesrc); newesttimeinminutes = this.gettimedistanceinminutes(newesttime); if (newesttimeinminutes >= 0 && newesttimeinminutes = 45 && newesttimeinminutes = 90 && newesttimeinminutes = 2520 && this.startinterval !== 60000 * 60 * 12) { this.startinterval = 60000 * 60 * 12; return this.restarttimer(); } } }; timeago.prototype.timeagoinwords = function(timestring) { var absoluttime; absoluttime = this.parse(timestring); return this.distanceoftimeinwords(absoluttime) + (this.options.lang.suffix); }; timeago.prototype.parse = function(iso8601) { var timestr; timestr = $.trim(iso8601); timestr = timestr.replace(/\.\d\d\d+/, ); timestr = timestr.replace(/-/, /).replace(/-/, /); timestr = timestr.replace(/t/, ).replace(/z/, utc); timestr = timestr.replace(/([\+\-]\d\d)\:?(\d\d)/, $1$2); return new date(timestr); }; timeago.prototype.gettimedistanceinminutes = function(absoluttime) { var timedistance; timedistance = new date().gettime() - absoluttime.gettime(); return math.round((math.abs(timedistance) / 1000) / 60); }; timeago.prototype.distanceoftimeinwords = function(absoluttime) { var dim; dim = this.gettimedistanceinminutes(absoluttime); if (dim === 0) { return + this.options.lang.prefixes.lt + + this.options.lang.units.minute; } else if (dim === 1) { return 1 + this.options.lang.units.minute; } else if (dim >= 2 && dim = 45 && dim = 90 && dim = 1440 && dim = 2520 && dim = 43200 && dim = 86400 && dim = 525600 && dim = 655200 && dim = 914400 && dim <= 1051199) { return + this.options.lang.prefixes.almost + 2 + this.options.lang.units.years; } else { return + this.options.lang.prefixes.about + + (math.round(dim / 525600)) + + this.options.lang.units.years; } }; return timeago; })(); $.fn.timeago = function(options) { if (options == null) options = {}; return this.each(function() { var $this, data; $this = $(this); data = $this.data(timeago); if (!data) $this.data(timeago, new timeago(this, options)); if (typeof options === 'string') return data[options](); }); }; $.fn.findandself = function(selector) { return this.find(selector).add(this.filter(selector)); }; $.fn.timeago.constructor = timeago; $.fn.timeago.defaults = { selector: 'time.timeago', attr: 'datetime', dir: 'up', lang: { units: { second: second, seconds: seconds, minute: minute, minutes: minutes, hour: hour, hours: hours, day: day, days: days, month: month, months: months, year: year, years: years }, prefixes: { lt: less than a, about: about, over: over, almost: almost }, suffix: ' ago' } }; }).call(this);
使用js插件:(改装版(简哟版)timeago.js)中文的
(function (factory) { if (typeof define === 'function' && define.amd) { // amd. register as an anonymous module. define(['jquery'], factory); } else { // browser globals factory(jquery); } }(function ($) { $.timeago = function(timestamp) { if (timestamp instanceof date) { return inwords(timestamp); } else if (typeof timestamp === string) { return inwords($.timeago.parse(timestamp)); } else if (typeof timestamp === number) { return inwords(new date(timestamp)); } else { return inwords($.timeago.datetime(timestamp)); } }; var $t = $.timeago; $.extend($.timeago, { settings: { refreshmillis: 60000, allowfuture: false, localetitle: false, cutoff: 0, strings: { prefixago: null, prefixfromnow: null, suffixago: 前, suffixfromnow: from now, seconds: 1分钟, minute: 1分钟, minutes: %d分钟, hour: 1小时, hours: %d小时, day: 1天, days: %d天, month: 1月, months: %d月, year: 1年, years: %d年, wordseparator: , numbers: [] } }, inwords: function(distancemillis) { var $l = this.settings.strings; var prefix = $l.prefixago; var suffix = $l.suffixago; if (this.settings.allowfuture) { if (distancemillis < 0) { prefix = $l.prefixfromnow; suffix = $l.suffixfromnow; } } var seconds = math.abs(distancemillis) / 1000; var minutes = seconds / 60; var hours = minutes / 60; var days = hours / 24; var years = days / 365; function substitute(stringorfunction, number) { var string = $.isfunction(stringorfunction) ? stringorfunction(number, distancemillis) : stringorfunction; var value = ($l.numbers && $l.numbers[number]) || number; return string.replace(/%d/i, value); } var words = seconds < 45 && substitute($l.seconds, math.round(seconds)) || seconds < 90 && substitute($l.minute, 1) || minutes < 45 && substitute($l.minutes, math.round(minutes)) || minutes < 90 && substitute($l.hour, 1) || hours < 24 && substitute($l.hours, math.round(hours)) || hours < 42 && substitute($l.day, 1) || days < 30 && substitute($l.days, math.round(days)) || days < 45 && substitute($l.month, 1) || days 0) { setinterval(refresh_el, $s.refreshmillis); } }, update: function(time){ $(this).data('timeago', { datetime: $t.parse(time) }); refresh.apply(this); }, updatefromdom: function(){ $(this).data('timeago', { datetime: $t.parse( $t.istime(this) ? $(this).attr(datetime) : $(this).attr(title) ) }); refresh.apply(this); } }; $.fn.timeago = function(action, options) { var fn = action ? functions[action] : functions.init; if(!fn){ throw new error(unknown function name '+ action +' for timeago); } // each over objects here and call the requested function this.each(function(){ fn.call(this, options); }); return this; }; function refresh() { var data = preparedata(this); var $s = $t.settings; if (!isnan(data.datetime)) { if ( $s.cutoff == 0 || distance(data.datetime) 0 && !($t.istime(element) && element.attr(title))) { element.attr(title, text); } } return element.data(timeago); } function inwords(date) { return $t.inwords(distance(date)); } function distance(date) { return (new date().gettime() - date.gettime()); } // fix for ie6 suckage document.createelement(abbr); document.createelement(time); }));
希望本文所述对大家的javascript程序设计有所帮助。
其它类似信息

推荐信息