日期区间的终点是用第二天的 00:00:00 还是当天的 23:59:59 比较好?

查看 533|回复 45
likunyan   
用 23:59:59 ,00:00:00 已经是第二天了
shuax   
@likunyan 23:59:59 没有包含完整的一天
xhyzidane   
@belin520 实际上是 23:59:59.999
Kin9   
24:00:00
milukun   
那你可以制造一条 23:59:59.xx 的数据,然后暴露出这个 bug
他们后端就统一了
xuanbg   
我在后端都是:start <= x < end 。所以,按日期的话,end 是前端传的日期/时间的下一天的 0 点
debuggerx   
我的习惯是,如果是日期范围的参数,比如 1 月 1 号-1 月 3 号,那么前端就传 1 月 1 号和 1 月 3 号这两天任意的时间即可(比如 2024-01-01 08:12:35 和 2024-01-03 18:22:02 就满足,),后端只取日期部分。这样的好处是不会把歧义泄露到前端代码,并且前端使用 api 非常方便,比如前端想要近 5 天的数据,只要写:
const now = new Date();
const endTime = now.toISOString();
now.setDate(now.getDate() - 5);
const startTime = now.toISOString();
apis.someApi(startTime, endTime);
crz   
toDate(timestamp) == date
libook   
小于等于这个逻辑就是错的,因为并没有完全覆盖时间段,除非业务能接受没覆盖的那一部分被排除在外。
qzh993   
很多兄弟都说了,左开右闭原则,前端只传日期,比如要查询 2024-01-04 这天的数据,后端这么处理,2024-01-04 00:00:00 <= create_time < 2024-01-05 00:00:00
您需要登录后才可以回帖 登录 | 立即注册

返回顶部