java.util.Calendar获取时间区间问题
虽然java8的LocalDate已经出来,但是很多项目以及自己习惯上还是使用Date,这里还是简单介绍一下如何通过java.util.Calendar获取时间区间.
1 通过calendar.getActualMinimum,getActualMaximum获取周,月,年的最大值,最小值
/**
* @Title: getSeasonFrist
* @Description: 获取季度初日期
* @param calendar
* @return
* @throws ParseException
*/
public static String getSeasonFrist(Calendar calendar) throws ParseException {
int month = calendar.get(Calendar.MONTH);
int season = getSeason(month, 0);
calendar.set(Calendar.DAY_OF_MONTH, 0);
calendar.set(Calendar.MONTH, season);
calendar.add(Calendar.DATE, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
return sdf.format(calendar.getTime());
} /**
* @Title: getSeasonLast
* @Description: 获取季度末日期时间
* @param calendar
* @return
* @throws ParseException
*/
public static String getSeasonLast(Calendar calendar) throws ParseException {
int month = calendar.get(Calendar.MONTH);
int season = getSeason(month, 1);
calendar.set(Calendar.MONTH, season);
calendar.set(Calendar.DAY_OF_MONTH, -1);
calendar.add(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
return sdf.format(calendar.getTime());
}
问题,因为直接设置月份,除了月份其他信息没有改,会造成获取月份最大值不准确,即当前月是9月,我把月份改成10,但是9月的最大天数是30,所以获取月份最后一天就是:10月30日
方式二:通过获取下月月初减一的方式获取区间最后一天,这种方式可简单有效解决月末日期不准确问题
/**
* @Title: getSeasonFrist
* @Description: 获取季度初日期
* @param calendar
* @return
* @throws ParseException
*/
public static String getSeasonFrist(Calendar calendar) throws ParseException {
int month = calendar.get(Calendar.MONTH);
int season = getSeason(month, 0);
calendar.set(Calendar.MONTH, season);
calendar.set(Calendar.DAY_OF_MONTH, 1);
return sdf.format(calendar.getTime());
} /**
* @Title: getSeasonLast
* @Description: 获取季度末日期时间
* @param calendar
* @return
* @throws ParseException
*/
public static String getSeasonLast(Calendar calendar) throws ParseException {
int month = calendar.get(Calendar.MONTH);
int season = getSeason(month, 1);
calendar.set(Calendar.MONTH, season + 1);
calendar.set(Calendar.DAY_OF_MONTH, 0);
return sdf.format(calendar.getTime());
}
这里用季度的例子举例,月和年类似;因为calendar没有直接获取季度的方法,季度的区间需要自己定义,其实就是获取当前月,然后自己定义每个月属于哪个季度,并返回季度首尾的月份;
java.util.Calendar获取时间区间问题的更多相关文章
- 常用类一一时间处理相关类一一java.util.Tomezone(java.util.Calendar , java.util.Date , java.text.DateFormat)
时间处理相关类 时间是一个一维的东东.所以,我们需要一把刻度尺来区表达和度量时间.在计算机世界,我们把1970 年 1 月 1 日 00:00:00定为基准时间,每个度量单位是毫秒(1秒的千分之一). ...
- java.util.Calendar
package day14; import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer; import java.util.Cal ...
- java.sql.Date/ java.util.Date/ java.util.Calendar 用法与区别
在 JDK API 这样解释," 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值.它也允许格式化和解析日期字符串.不过,这些函数的 ...
- Java.util.Calendar类
Java.util.Calendar类 package myProject; import java.text.SimpleDateFormat; import java.util.Calendar; ...
- Android 开发笔记 “java.util.Calendar.compareTo()”
java.util.Calendar.compareTo() 方法比较Calendar对象和anotherCalendar对象之间的时间值(毫秒偏移量). 声明 以下是java.util.Calen ...
- Js:消息弹出框、获取时间区间、时间格式、easyui datebox 自定义校验、表单数据转化json、控制两个日期不能只填一个
(function ($) { $.messageBox = function (message) { $.messager.show({ title:'消息框提示', msg:message, sh ...
- java.util.Calendar简介
Calendar是一个抽象类,我们无法直接实例化它,它有一个具体子类实体类java.util.GregorianCalendar,这个类实现的就是我们日常所用的公历历法,或者叫做阳历.我们可以直接使用 ...
- java.util.zip获取Zip文件条目InputStream
package com.test; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import ja ...
- 使用java的Calendar工具类获取到本月的第一天起始时间和最后一天结束时间。
1.使用java的Calendar工具类获取到本月的第一天起始时间和最后一天结束时间. package com.fline.aic.utils; import java.text.DateFormat ...
随机推荐
- LinearSearch Java
Java LinearSearch /** * <html> * <body> * <P> Copyright 1994-2018 JasonInternation ...
- JDBC 学习复习7 学习 Apache 开源DBCP 数据源
DBCP(DataBase connection pool),数据库连接池.是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件.单独使用dbcp需要2个包:comm ...
- 基于【 centos7】一 || 安装ELK
一.安装jdk 上传安装包并解压:tar -zxvf ... 配置环境变量: 在配置文件中添加如下配置信息:vi /etc/profile export JAVA_HOME=/usr/local/jd ...
- Echarts配置项详解
1.图表标题 title: { x: 'left', // 水平安放位置,默认为左对齐,可选为: // 'center' ¦ 'left' ¦ 'right' // ¦ {number}(x坐标,单位 ...
- 离线yum源挂载及yum服务器搭建
在进行现网环境搭建的时候,绝大多数情况下,centos或redhat(以下以centos为例)服务器是跟公网隔离的,因此需要找一台服务器挂载自己的yum源. 一.离线yum源包的制作 离线yum源可以 ...
- Python使用selenium模拟点击,进入下一页(三)
嗯,昨天呢,我们已经实现了自动输入百度然后搜索Cgrain,然后点击按钮,进入我的页面,在这里呢,有个问题 ActionChains(seleniumGoo).move_by_offset(-480, ...
- PAT乙级1044
题目链接 https://pintia.cn/problem-sets/994805260223102976/problems/994805279328157696 题解 需要注意的几个点: 题目有指 ...
- JavaScript 页面渲染
1. 从输入url到得到html的详细过程 1.1 加载资源的形式 输入 URL 或跳转页面 加载 html 1.2 加载一个资源的过程 浏览器根据DNS服务器得到域名的IP地址 向这个IP ...
- python numpy的基本操作
站长资讯平台:文章目录0.NumPy 与 ndarry1.数组属性查看:类型.尺寸.形状.维度2.numpy元素中数据存储方式,数据类型,类型转换2.1 查看元素数据存储类型2.2 元素数据存储类型转 ...
- chrome插件编写中需要了解的几个概念和一些方法
1.插件文件结构 1.1.manifest.json 每一个扩展.可安装的WebApp.皮肤,都有一个JSON格式的manifest文件,里面存放重要的插件相关信息. 一个最基本的配置例子: { &q ...