老程序员分享:js中自然日的计算

简介: 老程序员分享:js中自然日的计算

"

需求:前端取后端返回的时间与当前时//代码效果参考:https://v.youku.com/v_show/id_XNjQwNjU2NzcyMA==.html

间进行比较展示,展示规则:

1、返回的时间跟当前时间同年同月同日 显示 今天

2、返回的时间与当前时间相差在7天以内 显示 某天前

3、返回的时间与当前时间相差大于7天 显示 yyyy-mm-dd

4、是自然日的计算。 例如:返回的时间是 2018-10-31 23:59:59 当前时间是 2018-11-01 14:38:00 (这里时间戳相减是小于24个小时) 或 返回的时间是 2018-10-31 00:00:01 当前时间是 2018-11-01 14:38:00 (这里时间戳相减是大于24个小时) 都算是一天

背景:考虑过时间戳相减计算,但是行不怎么通。如下:

function getTimeDifference(date1,date2){

date1 = new Date(date1.replace(/-/g, ""\/""));

date2 = new Date(date2.replace(/-/g, ""\/""));

var days = date2.getTime() - date1.getTime();

var time = parseInt(days / (1000 60 60 * 24));

return time;

}

分析:用上面列举的时间,放到这个函数里面计算, 第一个得到的天是0 第二个是 1 显然,第一个得到的是错误的。这里是用parseInt得到的结果取整,换成向下或向上取整都有类似的问题。

解决办法:

var lastTime = function (time) {

if (time === ""无访问记录"") return time;

if (typeof time === ""string"") {

var regexp = getRegExp('-', //代码效果参考:https://v.youku.com/v_show/id_XNjQwMDEyNDgwOA==.html

'g');

time = time.replace(regexp, '/');

}

var ct = getDate(),

tt = getDate(time),

curDate = ct.getDate(),

tDate = tt.getDate(),

diff = getDate().getTime() - getDate(time).getTime(),

day = 24 3600 1000,

count = 0;

if (diff < 8 * day) {

if (curDate === tDate) {

return ""今天"";

}

while (tDate !== curDate) {

count++;

tt.setDate(++tDate);

tDate = tt.getDate();

}

return count + ""天前"";

}

return _toDate(time);

},

分析:重点在while语句里面,当然 while语句在 diff < 8 * day 条件下,就不用考虑 不同月的同一天。执行环境是小程序中的wxs中,所以用的是wxs中的方法,需要的可以更换对应的js方法。

思路来源于我另外一篇随笔:点击进入


"
image.png
相关文章
|
2月前
|
JavaScript
js计算时间差,包括计算,天,时,分,秒
js计算时间差,包括计算,天,时,分,秒
195 16
|
20天前
|
缓存 JavaScript 前端开发
探索Vue.js中的计算属性与侦听器
【10月更文挑战第5天】探索Vue.js中的计算属性与侦听器
18 1
|
20天前
|
缓存 JavaScript 前端开发
深入理解Vue.js中的计算属性与侦听属性
【10月更文挑战第5天】深入理解Vue.js中的计算属性与侦听属性
15 0
|
20天前
|
缓存 JavaScript 前端开发
探索Vue.js中的计算属性与侦听器:深入理解与实践
【10月更文挑战第5天】探索Vue.js中的计算属性与侦听器:深入理解与实践
16 0
|
3月前
|
存储 JavaScript 前端开发
后端程序员的前端基础-前端三剑客之JavaScript
后端程序员的前端基础-前端三剑客之JavaScript
30 4
|
3月前
|
JavaScript 前端开发 程序员
程序员必看:利用JavaScript的算术运算符大幅提升代码效率?
程序员必看:利用JavaScript的算术运算符大幅提升代码效率?
|
4月前
|
JavaScript
js 精确计算(解决js四则运算精度缺失问题)
js 精确计算(解决js四则运算精度缺失问题)
128 0
|
4月前
|
前端开发
大屏自适应/适配方案【详解】(echarts自适配、rem、flexible.js、vscode中px2rem插件自动计算rem)
大屏自适应/适配方案【详解】(echarts自适配、rem、flexible.js、vscode中px2rem插件自动计算rem)
562 0
|
4月前
|
JavaScript 前端开发
js/javascript 操作时间日期【全】含时间日期的创建、获取、比较、计算、格式化、时间戳、昨天、今天、星期汉化、计时、相关插件等
js/javascript 操作时间日期【全】含时间日期的创建、获取、比较、计算、格式化、时间戳、昨天、今天、星期汉化、计时、相关插件等
102 0
|
5月前
|
缓存 JavaScript 前端开发
老程序员分享:js刷新页面得重新加载和页面的刷新
老程序员分享:js刷新页面得重新加载和页面的刷新
36 0