截止时间的显示算法应该怎么写呢?

APP内有个任务截止时间的信息,发布时是按照(今天/明天/后天/具体日期)+具体时间构成的,发布之后希望用户可以直观的看到截止时间。


比如我现在发布的一个任务的截止时间是后天16:18,但存在数据库里面的时间为2022年5月20日16:18,如果用户此时看该任务时就显示截止时间为后天16:18,但是过了今晚24点再看此任务时,就应该显示为明天16:18,而过了明天晚上24点后再看时则显示今天16:18,而后天24点后再看时,则显示2022年5月20日16:18


也就是前端显示时要遵循以下规则:后天过期则显示为明天、明天过期变今天、今天过期变具体日期。


这个写法应该是怎么样的呢?

import java.util.Date;

String showTime = "";
Date deadline = new Date(2022,5,20,16,18);
Date today = new Date(System.currentTimeMillis());
if (deadline.getDay() - today.getDay() == 2) {
    showTime = "后天" + deadline.getHours() + ":" + deadline.getMinutes();
} else if (deadline.getDay() - today.getDay() == 1) {
    showTime = "明天" + deadline.getHours() + ":" + deadline.getMinutes();
}else if (deadline.getDay() - today.getDay() == 0) {
    showTime = "今天" + deadline.getHours() + ":" + deadline.getMinutes();
}else if (deadline.getDay() - today.getDay() < 0) {
    showTime = deadline.toString();
}

将dbTime换成你数据库中的时间即可
代码如下

public static void main(String[] args) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");// 自定义时间格式
        String dbTime = "2022年5月20日16:18";
        String resultStr = "";
        Pattern p = Pattern.compile("月(\\w+)日");
        Matcher m = p.matcher(dbTime);
        int day1 = 0;
        while (m.find()) {
            day1 = Integer.parseInt(m.group(1));
        }
        String nowDay = simpleDateFormat.format(new Date());
        int day2 = Integer.parseInt(nowDay.substring(nowDay.lastIndexOf("-") + 1));
        if (day1 - day2 == 2) {
            resultStr = "后天" + dbTime.substring(dbTime.lastIndexOf("日") + 1);
        } else if (day1 - day2 == 1) {
            resultStr = "明天" + dbTime.substring(dbTime.lastIndexOf("日") + 1);
        } else if (day1 - day2 == 0) {
            resultStr = "今天" + dbTime.substring(dbTime.lastIndexOf("日") + 1);
        } else {
            resultStr = dbTime;
        }
        System.out.println(resultStr);
    }

效果图:

img

获取系统时间的0点和数据库里面的时间转成0点 然后两个时间相减相差几天 来判断

判断当前时间和数据库中截止时间的时间差不就行了

为什么不能显示截止时间 2022年5月20日16:18

天相减 不就好了

很简单,取得当前系统时间,用数据库中时间与当前时间相减,差一天就是明天,差两天就是后天,页面实时刷新。客户端用JS的Date类实现即可。