DateUtil.java

package com.jtools;
   
  import java.text.ParseException;
  import java.text.SimpleDateFormat;
  import java.util.Calendar;
  import java.util.Date;
  import java.util.Locale;
   
  /**
  * 日期工具类
  * @author json_wang
  * @date 2017-02-04
  * @version v1.0
  * @create by json_wang
  * @edit
  */
  public class DateUtil {
   
  /**
  * 日期转化为字符串
  * @param date 日期
  * @param format 格式
  * @return
  */
  public static String dateToString(Date date,String format){
  String str = "";
  if(date != null){
  SimpleDateFormat formats = new SimpleDateFormat(format,Locale.CHINESE);
  str = formats.format(date);
  formats = null;
  }
  return str;
  }
   
  /**
  * 字符串转化为日期
  * @param str 日期字符串
  * @param format 格式
  * @return
  */
  public static Date stringToDate(String str,String format){
  SimpleDateFormat formats = new SimpleDateFormat(format);
  Date date = null;
  try {
  date = formats.parse(str);
  } catch (ParseException e) {
  e.printStackTrace();
  }
  formats = null;
  return date;
  }
   
  /**
  * 计算两个日期之间相差的天数
  * @param smdate 较小的时间
  * @param bdate 较大的时间
  * @return 相差天数
  * @throws ParseException
  */
  public static int daysBetween(Date smdate,Date bdate) throws ParseException{
  SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
  smdate=sdf.parse(sdf.format(smdate));
  bdate=sdf.parse(sdf.format(bdate));
  Calendar cal = Calendar.getInstance();
  cal.setTime(smdate);
  long time1 = cal.getTimeInMillis();
  cal.setTime(bdate);
  long time2 = cal.getTimeInMillis();
  long between_days=(time2-time1)/(1000*3600*24);
  return Integer.parseInt(String.valueOf(between_days))+1;
  }
   
  /**
  * 判断一个时间是否在一个时间段内
  * @param date 要判断是否在时段内的日期
  * @param startTime 时间段的开始日期 yyyy-MM-dd HH:mm:ss
  * @param endTime 时间段的结束日期 yyyy-MM-dd HH:mm:ss
  * @return 在时间段内返回true ,不在返回false
  * @throws ParseException
  */
  public static boolean isInTimeBucket(Date date,Date startTime,Date endTime){
   
  Calendar date1 = Calendar.getInstance();
  date1.setTime(date);
   
  Calendar start = Calendar.getInstance();
  start.setTime(startTime);
   
  Calendar end = Calendar.getInstance();
  end.setTime(endTime);
   
  if(date1.after(start)&&date1.before(end)){
  return true;
  }else{
  return false;
  }
  }
   
  /**
  * 得到某年某月的第一天开始时间
  *
  * @param year
  * @param month
  * @return
  */
  public static Date getFirstDayOfMonth(int year, int month) {
  Calendar cal = Calendar.getInstance();
  cal.set(Calendar.YEAR, year);
  cal.set(Calendar.MONTH, month-1);
  cal.set(Calendar.DAY_OF_MONTH, cal.getMinimum(Calendar.DATE));
  cal.set(Calendar.HOUR_OF_DAY, 0);
  cal.set(Calendar.MINUTE, 0);
  cal.set(Calendar.SECOND, 0);
  return stringToDate("yyyy-MM-dd HH:mm:ss",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(cal.getTime()));
  }
   
  /**
  * 得到某年某月的最后一天结束时间
  *
  * @param year
  * @param month
  * @return
  */
  public static Date getLastDayOfMonth(int year, int month) {
  Calendar cal = Calendar.getInstance();
  cal.set(Calendar.YEAR, year);
  cal.set(Calendar.MONTH, month);
  cal.set(Calendar.DAY_OF_MONTH, cal.getMinimum(Calendar.DATE));
  cal.set(Calendar.HOUR_OF_DAY, 0);
  cal.set(Calendar.MINUTE, 0);
  cal.set(Calendar.SECOND, 0);
  cal.add(Calendar.SECOND, -1);
  return stringToDate("yyyy-MM-dd HH:mm:ss",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(cal.getTime()));
  }
   
  /**
  * 得到某年某月某一天的开始时间
  * @param year
  * @param month
  * @param day
  * @return
  */
  public static Date getStartTimeOfDay(int year, int month, int day) {
  Calendar cal = Calendar.getInstance();
  cal.set(Calendar.YEAR, year);
  cal.set(Calendar.MONTH, month-1);
  cal.set(Calendar.DAY_OF_MONTH, day);
  cal.set(Calendar.HOUR_OF_DAY, 0);
  cal.set(Calendar.MINUTE, 0);
  cal.set(Calendar.SECOND, 0);
  return stringToDate("yyyy-MM-dd HH:mm:ss",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(cal.getTime()));
  }
   
  /**
  * 得到某年某月某一天的结束时间
  * @param year
  * @param month
  * @param day
  * @return
  */
  public static Date getEndTimeOfDay(int year, int month, int day) {
  Calendar cal = Calendar.getInstance();
  cal.set(Calendar.YEAR, year);
  cal.set(Calendar.MONTH, month-1);
  cal.set(Calendar.DAY_OF_MONTH, day+1);
  cal.set(Calendar.HOUR_OF_DAY, 0);
  cal.set(Calendar.MINUTE, 0);
  cal.set(Calendar.SECOND, -1);
  return stringToDate("yyyy-MM-dd HH:mm:ss",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(cal.getTime()));
  }
   
  /**
  * 得到指定月的天数
  * @param year
  * @param month
  * @return
  */
  public static int getMonthDays(int year, int month){
  Calendar a = Calendar.getInstance();
  a.set(Calendar.YEAR, year);
  a.set(Calendar.MONTH, month - 1);
  a.set(Calendar.DATE, 1);//把日期设置为当月第一天
  a.roll(Calendar.DATE, -1);//日期回滚一天,也就是最后一天
  return a.get(Calendar.DATE);
  }
   
  /**
  * 获取7天前的日期
  */
  public static Date getSevenDaysBefore(){
  Calendar c = Calendar.getInstance();
  c.add(Calendar.DATE, -6);
  return c.getTime();
  }
   
  /**
  * 获取季度开始日期时间
  * @return
  */
  public static Date getCurrentQuarterStartTime(int quarter){
  Date sDate = new Date();
  Calendar c = Calendar.getInstance();
  if(quarter == 1){
  sDate = getFirstDayOfMonth(c.get(Calendar.YEAR),Calendar.JANUARY+1);
  }else if(quarter == 2){
  sDate = getFirstDayOfMonth(c.get(Calendar.YEAR),Calendar.APRIL+1);
  }else if(quarter == 3){
  sDate = getFirstDayOfMonth(c.get(Calendar.YEAR),Calendar.JULY+1);
  }else if(quarter == 4){
  sDate = getFirstDayOfMonth(c.get(Calendar.YEAR),Calendar.OCTOBER+1);
  }
  return sDate;
  }
   
  /**
  * 获取季度结束日期时间
  * @return
  */
  public static Date getCurrentQuarterEndTime(int quarter){
  Date eDate = new Date();
  Calendar c = Calendar.getInstance();
  if(quarter == 1){
  eDate = getLastDayOfMonth(c.get(Calendar.YEAR),Calendar.MARCH+1);
  }else if(quarter == 2){
  eDate = getLastDayOfMonth(c.get(Calendar.YEAR),Calendar.JUNE+1);
  }else if(quarter == 3){
  eDate = getLastDayOfMonth(c.get(Calendar.YEAR),Calendar.SEPTEMBER+1);
  }else if(quarter == 4){
  eDate = getLastDayOfMonth(c.get(Calendar.YEAR),Calendar.DECEMBER+1);
  }
  return eDate;
  }
   
  /**
  * 获取年的开始日期
  */
  public static Date getYearStartTime(){
  Calendar c = Calendar.getInstance();
  return getFirstDayOfMonth(c.get(Calendar.YEAR),Calendar.JANUARY+1);
  }
   
  /**
  * 获取年的结束日期
  */
  public static Date getYearEndTime(){
  Calendar c = Calendar.getInstance();
  return getLastDayOfMonth(c.get(Calendar.YEAR),Calendar.DECEMBER+1);
  }
   
  /**
  * 判断日期在第几季度
  * 1 第一季度 2 第二季度 3 第三季度 4 第四季度
  * @param date
  * @return
  */
  public static int getQuarter(Date date) {
  int season = 0;
  Calendar c = Calendar.getInstance();
  c.setTime(date);
  int month = c.get(Calendar.MONTH);
  switch (month) {
  case Calendar.JANUARY:
  case Calendar.FEBRUARY:
  case Calendar.MARCH:
  season = 1;
  break;
  case Calendar.APRIL:
  case Calendar.MAY:
  case Calendar.JUNE:
  season = 2;
  break;
  case Calendar.JULY:
  case Calendar.AUGUST:
  case Calendar.SEPTEMBER:
  season = 3;
  break;
  case Calendar.OCTOBER:
  case Calendar.NOVEMBER:
  case Calendar.DECEMBER:
  season = 4;
  break;
  default:
  break;
  }
  return season;
  }
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值