java.util.Calendar获取时间区间问题
发布日期:2021-08-29 06:13:52 浏览次数:14 分类:技术文章

本文共 2583 字,大约阅读时间需要 8 分钟。

虽然java8的LocalDate已经出来,但是很多项目以及自己习惯上还是使用Date,这里还是简单介绍一下如何通过java.util.Calendar获取时间区间.

1 通过calendar.getActualMinimum,getActualMaximum获取周,月,年的最大值,最小值

1     /** 2      * @Title: getSeasonFrist 3      * @Description: 获取季度初日期 4      * @param calendar 5      * @return 6      * @throws ParseException 7      */ 8     public static String getSeasonFrist(Calendar calendar) throws ParseException { 9         int month = calendar.get(Calendar.MONTH);10         int season = getSeason(month, 0);11         calendar.set(Calendar.DAY_OF_MONTH, 0);12         calendar.set(Calendar.MONTH, season);13         calendar.add(Calendar.DATE, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));14         return sdf.format(calendar.getTime());15     }16 17     /**18      * @Title: getSeasonLast19      * @Description: 获取季度末日期时间20      * @param calendar21      * @return22      * @throws ParseException23      */24     public static String getSeasonLast(Calendar calendar) throws ParseException {25         int month = calendar.get(Calendar.MONTH);26         int season = getSeason(month, 1);27         calendar.set(Calendar.MONTH, season);28         calendar.set(Calendar.DAY_OF_MONTH, -1);29         calendar.add(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));30         return sdf.format(calendar.getTime());31     }

问题,因为直接设置月份,除了月份其他信息没有改,会造成获取月份最大值不准确,即当前月是9月,我把月份改成10,但是9月的最大天数是30,所以获取月份最后一天就是:10月30日

方式二:通过获取下月月初减一的方式获取区间最后一天,这种方式可简单有效解决月末日期不准确问题

1     /** 2      * @Title: getSeasonFrist 3      * @Description: 获取季度初日期 4      * @param calendar 5      * @return 6      * @throws ParseException 7      */ 8     public static String getSeasonFrist(Calendar calendar) throws ParseException { 9         int month = calendar.get(Calendar.MONTH);10         int season = getSeason(month, 0);11         calendar.set(Calendar.MONTH, season);12         calendar.set(Calendar.DAY_OF_MONTH, 1);13         return sdf.format(calendar.getTime());14     }15 16     /**17      * @Title: getSeasonLast18      * @Description: 获取季度末日期时间19      * @param calendar20      * @return21      * @throws ParseException22      */23     public static String getSeasonLast(Calendar calendar) throws ParseException {24         int month = calendar.get(Calendar.MONTH);25         int season = getSeason(month, 1);26         calendar.set(Calendar.MONTH, season + 1);27         calendar.set(Calendar.DAY_OF_MONTH, 0);28         return sdf.format(calendar.getTime());29     }

这里用季度的例子举例,月和年类似;因为calendar没有直接获取季度的方法,季度的区间需要自己定义,其实就是获取当前月,然后自己定义每个月属于哪个季度,并返回季度首尾的月份;

转载于:https://www.cnblogs.com/chengmuyu/p/7691979.html

转载地址:https://blog.csdn.net/weixin_33985507/article/details/94071758 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:baidu面试题
下一篇:Vue+elementUI开发中 Cannot read property 'resetFields' of undefined 问题解决以及原因分析...

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月04日 01时27分51秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

网站制作---网站伪静态的介绍 2019-04-26
微信公众开放平台开发01---微信公众平台介绍,以及开发准备 2019-04-26
微信公众开放平台开发02---微信公众平台PHP接口和java接口对比 2019-04-26
微信公众开放平台开发06---复习一下servlet 2019-04-26
微信公众开放平台开发07---java servlet 实现微信开发第一步:微信服务器验证 2019-04-26
微信公众开放平台开发08---纯java 实现微信开发:编写自定义菜单 2019-04-26
二维码相关---java生成二维码名片,并且自动保存到手机通讯录中... 2019-04-26
ASP.Net学习笔记003--网站和WebApplication的区别 2019-04-26
微信小程序开发学习笔记004--微信小程序语法结构 2019-04-26
微信小程序开发学习笔记005--微信小程序组件详解 2019-04-26
微信小程序开发学习笔记006--微信小程序组件详解02 2019-04-26
微信小程序开发学习笔记007--微信小程序项目01 2019-04-26
MySQL 在控制台插入数据时,中文乱码问题的解决 2019-04-26
微信小程序开发学习笔记008--微信小程序项目02 2019-04-26
SpringCloud工作笔记076--- CheckStyle插件提高java代码质量 2019-04-26
android学习笔记---50_样式与主题,给控件使用样式,给应用使用主题 2019-04-26
云计算学习笔记005---Hadoop HDFS和MapReduce 架构浅析 2019-04-26
android学习笔记---49_屏幕适配,根据不同手机屏幕大小适配软件界面 2019-04-26
android学习笔记---51_编码实现软件界面,把固定不变的界面写到xml中,逻辑改变的写到程序中, 2019-04-26
android学习笔记---52_发送状态栏通知 2019-04-26