微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java将时间按月份分段的实现思路与方法

这篇文章主要给大家介绍了关于Java将时间按月份分段的实现思路与方法,通过文中介绍的方法可以将时间分成我们想要的时间段,文中给出了详细的实例代码,需要的朋友可以参考下

前言

有时候我们得到一段时间,需要将时间按照月份将这一段时间来分段。比如开始时间为 2020/07/15 至 2021/07/05 按照月份来将数据分组展示,所以需要将这端时间分为以下几段:2020/07/15 ~ 2020/08/012020/08/01 ~ 2020/09/012020/09/01 ~ 2020/10/01...2021/06/01 ~ 2021/07/012021/07/01 ~ 2021/07/05

一、知识点

将时间分类主要是用到了Java中的 Calendar,像一般需要对时间进行处理的时候都是需要用到这个类的。可以使用 Calendar 这个类设置或获取日历中的时间,一些常用的API如下所示:

初始化Calendar对象

Calendar calendar = Calendar.getInstance();

设置日历的时间

Date time = new Date; calendar.setTime(time);

获取日历中的时间(年月日)

calendar.set(Calendar.YEAR, 2021); // 年 calendar.add(Calendar.MONTH, 1); // 月 calendar.set(Calendar.DAY_OF_MONTH, 1); // 日

二、思路分析

大概的实现思路就是:从开始时间开始,以累加的方式逐月增加,直到当前时间大于结束时间则停止叠加。

要注意的是,即使当前时间大于结束时间也需要把结束时间添加到结果集中。因为最后一个时间段是从月初到结束日期的。

三、实现方案

实现的方式就和思路中是一样的,一些注释都写在代码中了,如下图所示:

/** * 按照月份分割一段时间 * * @param startTime 开始时间戳(毫秒) * @param endTime 结束时间戳(毫秒) */ public static List getIntervalTimeByMonth(Date startTime, Date endTime) { List dateList = new ArrayList(); Calendar calendar = Calendar.getInstance(); calendar.setTime(startTime); dateList.add(calendar.getTimeInMillis()); while (calendar.getTimeInMillis() = endTime.getTime()){ dateList.add(endTime.getTime()); break; } // 下月初 calendar.add(Calendar.DATE, 1); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); dateList.add(calendar.getTimeInMillis()); } return dateList; }

测试的代码如下所示:

public static void main(String[] args) throws ParseException { SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date beginDate = sdf.parse("2020-07-15"); Date endDate = sdf.parse("2021-07-05"); List endDateList = DateUtil.getIntervalTimeByMonth(beginDate, endDate); for (int i = 0; i

测试的结果如下所示:

总结

到此这篇关于Java将时间按月份分段的实现思路与方法文章就介绍到这了,更多相关Java时间按月份分段内容搜索编程之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程之家!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐