欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java根据时间戳 获取该时间戳所在周 月 年 最后时刻(的时间戳)

程序员文章站 2024-02-27 20:10:03
...

测试类

public class TestDate {
    public static void main(String[] args) {
        TimeData weekTime = DateUtil.getWeekTime(1604542728478l);   //2020-11-05 10:18:48
        System.out.println(weekTime+" weekTime");

        Date date = new Date(1604542728478l);
        System.out.println(date+"  date");  //Thu Nov 05 10:18:48 CST 2020 = 2020-11-05 10:18:48

        long monthTime = cn.hutool.core.date.DateUtil.endOfMonth(date).getTime();
        System.out.println(monthTime+"  monthTime");    //1606751999999 = 2020-11-30 23:59:59

        long yearTime = cn.hutool.core.date.DateUtil.endOfYear(date).getTime();
        System.out.println(yearTime+"  yearTime");  //1609430399999 = 2020-12-31 23:59:59
    }
}

实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class TimeData {
    /**
     * 数据查询的开始时间
     */
    private Long startTime;
    /**
     * 数据查询的结束时间
     */
    private Long endTime;

}

工具类

public class DateUtil {

    public static TimeData getWeekTime(Long day) {
        DateTime date = new DateTime(day);
        //获取周的星期一
        //判断周一是否在上个月
        //日所在的月
        int dayMonth = cn.hutool.core.date.DateUtil.month(date);
        //周开始所在的月
        DateTime beginOfWeek = cn.hutool.core.date.DateUtil.beginOfWeek(date);
        int beginMonth = cn.hutool.core.date.DateUtil.month(beginOfWeek);
        //周结束所在的月
        DateTime endOfWeek = cn.hutool.core.date.DateUtil.endOfWeek(date);
        int endMonth = cn.hutool.core.date.DateUtil.month(endOfWeek);

        DateTime startTime;
        DateTime endTime;
        if (beginMonth == endMonth) {
            //周开始和结束在一个月内
            startTime = beginOfWeek;
            endTime = endOfWeek;
        } else if (beginMonth == dayMonth) {
            //周开始和日在一个月内
            startTime = beginOfWeek;
            endTime = cn.hutool.core.date.DateUtil.endOfMonth(date);
        } else {
            //周结束和日在一个月内
            startTime = cn.hutool.core.date.DateUtil.beginOfMonth(date);
            endTime = endOfWeek;
        }
        endTime.setField(DateField.HOUR_OF_DAY, 23);
        endTime.setField(DateField.SECOND, 59);
        endTime.setField(DateField.MINUTE, 59);
        //判断本周结束时间是否是下个月,是的话 取月结束时间,不是,取周结束时间
        return new TimeData(startTime.getTime(), endTime.getTime());
    }
}

运行结果

TimeData(startTime=1604246400000, endTime=1604851199999) weekTime
Thu Nov 05 10:18:48 CST 2020  date
1606751999999  monthTime
1609430399999  yearTime

这辈子坚持与不坚持都不可怕,怕的是独自走在坚持的道路上!!
欢迎加入技术群聊。

java根据时间戳 获取该时间戳所在周 月 年 最后时刻(的时间戳)

相关标签: java 小小