Calendar时间操作
1、Calendar是Java提供的一个util类,在java.util中。我们在开发过程中经常遇到,需要对时间进行处理的方式。而Java中Calendar给我们提供了很好的控制方式。
2、我这里主要是介绍几种Calendar的操作方式来获取不同时间
public class CalendarUtil {
/**
* 获取当月第一天开始时间和最后一天结束时间
* @return
*/
public final static List<Long> getMonthStartAndEnd(){
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH,0);
calendar.set(Calendar.DAY_OF_MONTH,1);
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND,0);
Long firstDay = calendar.getTime().getTime();
calendar.add(Calendar.MONTH,1);
Long lastDay = calendar.getTime().getTime()-1;
List<Long> times = new ArrayList<>();
times.add(firstDay);
times.add(lastDay);
return times;
}
/**
* 获取当天的开始时间
* @return
*/
public final static Long getDayStart(){
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH,0);
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND,0);
return calendar.getTime().getTime();
}
/**
* 获取某天的开始时间
* @param day
* @return
*/
public final static Long getDayStart(Integer day){
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH,0);
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND,0);
calendar.set(Calendar.DAY_OF_MONTH,day.intValue());
return calendar.getTime().getTime();
}
/**
* 获取某天的结束时间
* @param day
* @return
*/
public final static Long getDayEnd(Integer day){
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH,0);
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND,0);
calendar.set(Calendar.DAY_OF_MONTH,day.intValue()+1);
return calendar.getTime().getTime()-1;
}
/**
* 获取本月或者次月某天的结束时间
* @param month
* @param day
* @return
*/
public final static Long getDayEnd(Integer month,Integer day){
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH,month.intValue());
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND,0);
calendar.set(Calendar.DAY_OF_MONTH,day.intValue()+1);
return calendar.getTime().getTime()-1;
}
/**
* 获取本季度的开始时间和结束时间
* @return
*/
public final static List<Long> getQuarterStartAndEnd(){
//获取时间
Calendar calendar = Calendar.getInstance();
//判读当前时间是哪个季度
int month = calendar.get(Calendar.MONTH)+1;
Integer quarter = 0;
if (month>=1 && month <=3) {
quarter = 1;
} else if (month>=4 && month <=6) {
quarter = 2;
} else if (month>=7 && month <=9) {
quarter = 3;
} else if (month>=10 && month <=12) {
quarter = 4;
}
calendar.set(Calendar.MONTH,3*(quarter.intValue()-1));
calendar.set(Calendar.DAY_OF_MONTH,1);
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND,0);
Long firstDay = calendar.getTime().getTime();
calendar.add(Calendar.MONTH,3);
Long lastDay = calendar.getTime().getTime()-1;
List<Long> times = new ArrayList<>();
times.add(firstDay);
times.add(lastDay);
return times;
}
/**
* 获取每个季度第某个月,第某个天数的开始时间
* @return
*/
public final static List<Long> getQuarterStart(Integer month,Integer day){
List<Long> times = new ArrayList<>();
for (int i = 1; i <= 4; i++) {
//获取时间
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH,3*(i-1)-1+month.intValue());
calendar.set(Calendar.DAY_OF_MONTH,day);
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND,0);
times.add(calendar.getTime().getTime());
}
return times;
}
/**
* 获取某个季度某个月,某天的结束时间
* @return
*/
public final static Long getQuarterEnd(Integer month,Integer day){
//获取时间
Calendar calendar = Calendar.getInstance();
//判读当前时间是哪个季度
int currentMonth = calendar.get(Calendar.MONTH)+1;
Integer quarter = 0;
if (currentMonth>=1 && currentMonth <=3) {
quarter = 1;
} else if (currentMonth>=4 && currentMonth <=6) {
quarter = 2;
} else if (currentMonth>=7 && currentMonth <=9) {
quarter = 3;
} else if (currentMonth>=10 && currentMonth <=12) {
quarter = 4;
}
calendar.set(Calendar.MONTH,3*(quarter.intValue()-1)+month.intValue());
calendar.set(Calendar.DAY_OF_MONTH,day+1);
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND,0);
return calendar.getTime().getTime()-1;
}
/**
* 获取当年的开始时间和结束时间
* @return
*/
public final static List<Long> getYearStartAndEnd(){
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH,0);
calendar.set(Calendar.DAY_OF_MONTH,1);
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND,0);
Long firstDay = calendar.getTime().getTime();
calendar.add(Calendar.MONTH,12);
Long lastDay = calendar.getTime().getTime()-1;
List<Long> times = new ArrayList<>();
times.add(firstDay);
times.add(lastDay);
return times;
}
/**
* 获取当前年第某个月,第某个天数的开始时间
* @return
*/
public final static Long getYearStart(Integer month,Integer day){
//获取时间
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH,month.intValue()-1);
calendar.set(Calendar.DAY_OF_MONTH,day.intValue());
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND,0);
return calendar.getTime().getTime();
}
/**
* 获取当前年第某个月,第某个天数的结束时间
* @return
*/
public final static Long getYearEnd(Integer month,Integer day){
//获取时间
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH,month.intValue()-1);
calendar.set(Calendar.DAY_OF_MONTH,day.intValue()+1);
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND,0);
return calendar.getTime().getTime()-1;
}
}
Calendar时间操作的更多相关文章
- Date和Calendar时间操作常用方法及示例
package test; import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date; /** ...
- Java Calendar 类的时间操作
Java Calendar 类的时间操作 标签: javaCalendar时间Date 2013-07-30 17:53 140401人阅读 评论(7) 收藏 举报 分类: 所有(165) Java ...
- JAVA中的时间操作
java中的时间操作不外乎这四种情况: 1.获取当前时间 2.获取某个时间的某种格式 3.设置时间 4.时间的运算 好,下面就针对这四种情况,一个一个搞定. 一.获取当前时间 有两种方式可以获得,第一 ...
- java时间操作
这篇讲的也很专业:http://soft.zdnet.com.cn/software_zone/2007/1129/660028.shtml java中的时间操作不外乎这四种情况: 1.获取当前时间 ...
- java中常用的时间操作
最近项目设计时间的转换和计算,长时间没用时间操作了,感觉手有点生,所以在这里记录一下: Date 常用的方法: getTime() .setTime(): SimpleDateFormate 常用的方 ...
- poco时间操作
Poco::DateTime Poco::Timespan Poco::Timestamp 时间操作 Poco::DateTime dt; //c++ 20才有 Calendar dt = dt + ...
- Python基础 | 日期时间操作
目录 获取时间 时间映射 格式转换 字符串转日期 日期转字符串 unixtime 时间计算 时间偏移 时间差 "日期时间数据"作为三大基础数据类型之一,在数据分析中会经常遇到. 本 ...
- Java日期时间操作基础——包含JDK1.8时间操作新特性
JDK1.7日期时间操作 示例小结 public class DateTest { public static final String FORMAT_DATE = "yyyy-MM-dd& ...
- paip.日期时间操作以及时间戳uapi php java python 总结
paip.日期时间操作以及时间戳uapi php java python 总结 ///uapi Date 函数 | Day 函数 | Hour 函数 | Minute 函数 | Month 函数 | ...
随机推荐
- Python学习札记(二十二) 函数式编程3 filter & SyntaxError: unexpected EOF while parsing
参考: filter Problem SyntaxError: unexpected EOF while parsing 遇到该语法错误,一般是由于 括号不匹配 问题. Note 1.filter 用 ...
- Java中代码点与代码单元(转)
摘要 本文介绍 Java 平台支持增补字符的方式.增补字符是 Unicode 标准中代码点超出 U+FFFF 的字符,因此它们无法在 Java 编程语言中描述为单个的 16 位实体(例如char数据类 ...
- mysql explain extended 查看 执行计划
本文以转移至本人的个人博客,请多多关注! 本文以转移至本人的个人博客,请多多关注! 本文以转移至本人的个人博客,请多多关注! 本文以转移至本人的个人博客,请多多关注! 1. explain 可以查看 ...
- django使用bootstrap快速美化 admin后台
使用django-admin-bootstrappe快速美化后台 两步: 1.pip install django-admin-bootstrapped 安装应用 2.在setting.py里面添加 ...
- AndroidStudio怎样导入library项目开源库
AndroidStudio是一款非常强大的android程序开发软件,在里面集成了几乎所有android开发中需要使用的工具,编译.运行.打包.开发.调试等功能一应俱全,可以使用起来非常方便. 今天要 ...
- 将Excel的数据更新至SqlServer
update P_Dic_Region set F_Long=a.F_Long,F_Lat=a.F_Lat from( select * from OPENDATASOURCE( 'Microsoft ...
- Tornado源码分析 --- Redirect重定向
“重定向”简单介绍: “重定向”指的是HTTP重定向,是HTTP协议的一种机制.当client向server发送一个请求,要求获取一个资源时,在server接收到这个请求后发现请求的这个资源实际存放在 ...
- StringUtils 正则校验
public class StringUtils { /** * 如果str为null,返回“”,否则返回str * @param str * @return */ public static Str ...
- h5桌面通知Notification
H5中的桌面通知Notification 前言: 对于一个前端开发者,逛网页总会留意一些新奇的功能,对于上班总会用到Teambition的我,总是能收到Notification...所以今天就来研究下 ...
- oracle增加sequence
(1)删除序列; (2)重新创建: 这个方法比较简单粗暴. drop sequence sequence_name; create sequence sequence_name minvalu ...