import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

public class DateUtil {

private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

/*

获取昨天的日期

*/

public static Date getYesterday(Date date) {

Calendar cal = Calendar.getInstance();

cal.setTime(date);

cal.add(Calendar.DATE,-1);

Date yesterday = cal.getTime();

return yesterday;

}

/*

获取传入时间的日份

*/

public static int getDay(Date date) {

Calendar cal = Calendar.getInstance();

cal.setTime(date);

return cal.get(Calendar.DATE);

}

/**

* 获取传入时间的月份

*/

public static int getMonth(Date date) {

Calendar cal = Calendar.getInstance();

cal.setTime(date);

return cal.get(Calendar.MONTH) + 1;

}

/**

* 获取传入时间的季度

*/

public static int getQuarter(Date date) {

int month = getMonth(date);

if (month <= 3)

return 1;

else if (month <= 6)

return 2;

else if (month <= 9)

return 3;

else

return 4;

}

/**

* 获取传入时间的年份

*/

public static int getYear(Date date) {

Calendar cal = Calendar.getInstance();

cal.setTime(date);

return cal.get(Calendar.YEAR);

}

/**

* 获取传入时间月份天数

*/

public static int getCurrentMonthDay(Date date) {

Calendar cal = Calendar.getInstance();

cal.setTime(date);

cal.set(Calendar.DATE, 1);

cal.roll(Calendar.DATE, -1);

return cal.get(Calendar.DATE);

}

/**

* 获得传入时间为是星期几

*/

public static int getWeekDay(Date date) {

Calendar c = Calendar.getInstance();

c.setTime(date);

int weekDay = c.get(Calendar.DAY_OF_WEEK);

return weekDay - 1;

}

/*

获取所在周指定星期几的日期Date

*/

public static Date getWeekDayDate(Date date, int num) {

Calendar c = Calendar.getInstance();

c.setTime(date);

switch (num) {

case 1:

c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

break;

case 2:

c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);

break;

case 3:

c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);

break;

case 4:

c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);

break;

case 5:

c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);

break;

case 6:

c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);

break;

case 7:

// c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);

int weekday = c.get(Calendar.DAY_OF_WEEK);

c.add(Calendar.DATE, 8 - weekday);

break;

}

return c.getTime();

}

/*

获取传入时间所在周第一天,周一

*/

public static Date getFirstWeekDay(Date date) {

Calendar c = Calendar.getInstance();

c.setTime(date);

try {

int weekday = c.get(Calendar.DAY_OF_WEEK) - 2;

c.add(Calendar.DATE, -weekday);

} catch (Exception e) {

e.printStackTrace();

}

return c.getTime();

}

/*

获取传入时间所在周最后一天,周日

*/

public static Date getLastWeekDay(Date date) {

Calendar c = Calendar.getInstance();

c.setTime(date);

try {

int weekday = c.get(Calendar.DAY_OF_WEEK);

c.add(Calendar.DATE, 8 - weekday);

} catch (Exception e) {

e.printStackTrace();

}

return c.getTime();

}

/**

* 根据日期获取月初第一天

*/

public static Date getFirstMonthDay(Date date) {

Calendar cal = Calendar.getInstance();// 获取当前日期

cal.setTime(date);

cal.add(Calendar.MONTH, 0);

cal.set(Calendar.DAY_OF_MONTH, 1);

return cal.getTime();

}

/**

* 根据日期获取月末最后一天

*/

public static Date getLastMonthDay(Date date) {

Calendar cal = Calendar.getInstance();

cal.setTime(date);

cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));

return cal.getTime();

}

/*

根据日期获取所在季度的第一天

*/

public static Date getFirstQuarterDay(Date date) {

Calendar cal = Calendar.getInstance();

cal.setTime(date);

int currentMonth = cal.get(Calendar.MONTH) + 1;

try {

if (currentMonth >= 1 && currentMonth <= 3)

cal.set(Calendar.MONTH, 0);

else if (currentMonth >= 4 && currentMonth <= 6)

cal.set(Calendar.MONTH, 3);

else if (currentMonth >= 7 && currentMonth <= 9)

cal.set(Calendar.MONTH, 6);

else if (currentMonth >= 10 && currentMonth <= 12)

cal.set(Calendar.MONTH, 9);

cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));

} catch (Exception e) {

e.printStackTrace();

}

return cal.getTime();

}

/*

根据日期获取所在季度的最后一天

*/

public static Date getLastQuarterDay(Date date) {

Calendar cal = Calendar.getInstance();

cal.setTime(date);

int currentMonth = cal.get(Calendar.MONTH) + 1;

try {

if (currentMonth >= 1 && currentMonth <= 3)

cal.set(Calendar.MONTH, 2);

else if (currentMonth >= 4 && currentMonth <= 6)

cal.set(Calendar.MONTH, 5);

else if (currentMonth >= 7 && currentMonth <= 9)

cal.set(Calendar.MONTH, 8);

else if (currentMonth >= 10 && currentMonth <= 12)

cal.set(Calendar.MONTH, 11);

cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));

} catch (Exception e) {

e.printStackTrace();

}

return cal.getTime();

}

/*

所在年前/后半年开始日期

*/

public static Date getHalfYearStartTime(Date date) {

Calendar c = Calendar.getInstance();

c.setTime(date);

int currentMonth = c.get(Calendar.MONTH) + 1;

if (currentMonth >= 1 && currentMonth <= 6) {

c.set(Calendar.MONTH, 0);

} else if (currentMonth >= 7 && currentMonth <= 12) {

c.set(Calendar.MONTH, 6);

}

c.set(Calendar.DATE, 1);

return c.getTime();

}

/**

所在年前/后半年的结束时间

*/

public static Date getHalfYearEndTime(Date date) {

Calendar c = Calendar.getInstance();

c.setTime(date);

int currentMonth = c.get(Calendar.MONTH) + 1;

if (currentMonth >= 1 && currentMonth <= 6) {

c.set(Calendar.MONTH, 5);

c.set(Calendar.DATE, 30);

} else if (currentMonth >= 7 && currentMonth <= 12) {

c.set(Calendar.MONTH, 11);

c.set(Calendar.DATE, 31);

}

return c.getTime();

}

/**

* 根据日期获取年第一天

*/

public static Date getYearFirstDay(Date date){

Calendar calendar = Calendar.getInstance();

calendar.setTime(date);

int year=calendar.get(Calendar.YEAR);

Calendar cd = Calendar.getInstance();

cd.clear();

cd.set(Calendar.YEAR, year);

cd.roll(Calendar.DAY_OF_YEAR,0);

Date currYearLast = cd.getTime();

return currYearLast;

}

/*

获取当月指定天数日期

*/

public static Date getDateByDay(Date date, int day) {

Calendar cal = Calendar.getInstance();

cal.setTime(date);

cal.set(Calendar.DATE, day);

return cal.getTime();

}

/*

获取上月指定天数日期

*/

public static Date getLastMonthByDay(Date date, int day) {

Calendar cal = Calendar.getInstance();

cal.setTime(date);

int month = cal.get(Calendar.MONTH);

cal.set(Calendar.MONTH, month - 1);

cal.set(Calendar.DATE, day);

return cal.getTime();

}

/**

* 获取传入时间所在季度总天数

*/

public static int getCurrentQuarterDay(Date date) {

Date firstDayDate = getFirstQuarterDay(date);

Date lastDayDate = getLastQuarterDay(date);

int day = (int) ((lastDayDate.getTime() - firstDayDate.getTime()) / (24*3600*1000) + 1);

return day;

}

/*

判断日期是否为周日

*/

public static boolean isWeekEnd(Date date) {

Calendar calendar = Calendar.getInstance();

calendar.setTime(date);

if(calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY){

return true;

} else{

return false;

}

}

/*

判断日期是否为月末

*/

public static boolean isMonthEnd(Date date) {

Calendar calendar = Calendar.getInstance();

calendar.setTime(date);

int getDay = calendar.get(Calendar.DAY_OF_MONTH);

if(getDay == calendar.getActualMaximum(Calendar.DAY_OF_MONTH)){

return true;

}else{

return false;

}

}

/*

判断日期是否为季末(最后一天)

*/

public static boolean isQuarterEnd(Date date) {

Calendar c = Calendar.getInstance();

c.setTime(date);

int currentMonth = c.get(Calendar.MONTH) + 1;

Date dt = null;

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

try {

if (currentMonth >= 1 && currentMonth <= 3) {

c.set(Calendar.MONTH, 2);

c.set(Calendar.DATE, 31);

} else if (currentMonth >= 4 && currentMonth <= 6) {

c.set(Calendar.MONTH, 5);

c.set(Calendar.DATE, 30);

} else if (currentMonth >= 7 && currentMonth <= 9) {

c.set(Calendar.MONTH, 8);

c.set(Calendar.DATE, 30);

} else if (currentMonth >= 10 && currentMonth <= 12) {

c.set(Calendar.MONTH, 11);

c.set(Calendar.DATE, 31);

}

dt = sdf.parse(sdf.format(c.getTime()));

} catch (Exception e) {

e.printStackTrace();

}

if (date.compareTo(dt) == 0) {

return true;

} else {

return false;

}

}

/*

据日期获取去年年末

*/

public static Date getLastYearLastDay(Date date){

Calendar calendar = Calendar.getInstance();

calendar.setTime(date);

int year=calendar.get(Calendar.YEAR)-1;

Calendar cd = Calendar.getInstance();

cd.clear();

cd.set(Calendar.YEAR, year);

cd.roll(Calendar.DAY_OF_YEAR, -1);

Date currYearLast = cd.getTime();

return currYearLast;

}

/**

* 属于本年第几天

*/

public static int getYearDayIndex(Date date) {

Calendar calendar = Calendar.getInstance();

calendar.setFirstDayOfWeek(Calendar.MONDAY);

calendar.setTime(date);

return calendar.get(Calendar.DAY_OF_YEAR);

}

/**

* 属于本年第几周

*/

public static int getYearWeekIndex(Date date) {

Calendar calendar = Calendar.getInstance();

calendar.setFirstDayOfWeek(Calendar.MONDAY);

calendar.setTime(date);

return calendar.get(Calendar.WEEK_OF_YEAR);

}

/*

获取两个日期间的天数,直接传入Date

*/

public static Long getDayByDates(Date startDate, Date endDate) {

Long day = (endDate.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1000);

return day;

}

/*

获取两个日期间的天数,直接传入StrDate

*/

public static Long getDayByStrDates(String startStrDate, String endStrDate) throws ParseException {

Date startDate = sdf.parse(startStrDate);

Date endDate = sdf.parse(endStrDate);

Long day = (endDate.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1000);

return day;

}

/**

* 判断是否闰年

* 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年

* 3.能被4整除同时能被100整除则不是闰年

*/

public static boolean isLeapYear(Date date) {

Calendar cal = Calendar.getInstance();

cal.setTime(date);

int year = cal.get(Calendar.YEAR);

if ((year % 400) == 0) {

return true;

} else if ((year % 4) == 0) {

if ((year % 100) == 0) {

return false;

} else {

return true;

}

} else {

return false;

}

}

public static void main(String[] args) throws ParseException {

Date date = new Date();

System.out.println("前一天日期为:" + sdf.format(getYesterday(date)));

System.out.println("该日期的日份:" + getDay(date));

System.out.println("该日期的月份:" + getMonth(date));

System.out.println("该日期的季度:" + getQuarter(date));

System.out.println("该日期的年份:" + getYear(date));

System.out.println("所在月总天数:" + getCurrentMonthDay(date));

System.out.println("所在季度总天数:" + getCurrentQuarterDay(date));

System.out.println("该日期为本周星期:" + getWeekDay(date));

System.out.println("所在周的星期天的日期:" + sdf.format(getWeekDayDate(date, 7)));

System.out.println("所在周第一天日期:" + sdf.format(getFirstWeekDay(date)));

System.out.println("所在周最后一天日期:" + sdf.format(getLastWeekDay(date)));

System.out.println("所在月第一天日期:" + sdf.format(getFirstMonthDay(date)));

System.out.println("所在月最后一天日期:" + sdf.format(getLastMonthDay(date)));

System.out.println("所在季度第一天日期:" + sdf.format(getFirstQuarterDay(date)));

System.out.println("所在季度最后一天日期:" + sdf.format(getLastQuarterDay(date)));

System.out.println("所在年前/后半年开始日期:" + sdf.format(getHalfYearStartTime(date)));

System.out.println("所在年前/后半年结束日期:" + sdf.format(getHalfYearEndTime(date)));

System.out.println("所在年第一天日期:" + sdf.format(getYearFirstDay(date)));

System.out.println("所在月指定天数日期:" + sdf.format(getDateByDay(date, 10)));

System.out.println("上月指定天数日期:" + sdf.format(getLastMonthByDay(date, 10)));

System.out.println("是否为周日:" + isWeekEnd(date));

System.out.println("是否为月末:" + isMonthEnd(date));

System.out.println("是否为季末:" + isQuarterEnd(date));

System.out.println("去年最后一天日期:" + sdf.format(getLastYearLastDay(date)));

System.out.println("属于本年第几天:" + getYearDayIndex(date));

System.out.println("属于本年第几周:" + getYearWeekIndex(date));

System.out.println("两个日期的间隔天数:" + getDayByDates(sdf.parse("2019-10-28"), date));

System.out.println("两个日期的间隔天数:" + getDayByStrDates("2019-10-23", "2019-10-30"));

System.out.println("是否为闰年:" + isLeapYear(date));

}

}

java 当天日期 dateutil_Java时间日期DateUtil相关推荐

  1. Java 8新的时间日期库,这二十个案例看完你还学不会算我的!!!

    Java对日期,日历及时间的处理一直以来都饱受诟病,尤其是它决定将java.util.Date定义为可修改的以及将SimpleDateFormat实现成非线程安全的.看来Java已经意识到需要为时间及 ...

  2. Java 8新的时间日期库的20个使用示例

    Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务示例来学习如何使用Java 8的这套API.Java对日期,日历及时间的处理一直以来都饱受诟病,尤其是它决定将java ...

  3. Java 8中的时间日期库DateTime API及示例

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! Java8新特性的功能已经更新了不少篇幅了,今天重点讲解时间日期库中DateTime相关处理 ...

  4. Java 8 新的时间日期库java.time

    Instant--它代表的是时间戳 LocalDate--不包含具体时间的日期,比如 2020-01-14.它可以用来存储生日,周年纪念日,入职日期等. LocalTime--它代表的是不含日期的时间 ...

  5. linux 压缩 日期,Linux 时间日期类、搜索查找类、 压缩和解压类指令

    l 时间日期类 date指令-显示当前日期 基本语法 1) date (功能描述:显示当前时间) 2) date +%Y (功能描述:显示当前年份) 3) date +%m (功能描述:显示当前月份) ...

  6. java 当天最晚时间毫秒_java 日期和字符串互转,根据当天整天时间 得到当天最后一秒的日期时间...

    java 日期和字符串互转,根据当天整天时间   得到当天最后一秒的日期时间 package com.hi; import java.text.DateFormat; import java.text ...

  7. java转日期_Java时间日期格式转换

    import java.util.*;import java.text.*;importjava.util.Calendar;public classVeDate {/*** 获取现在时间 * *@r ...

  8. java int转日期_Java时间日期格式转换

    Java时间格式转换大全 import java.text.*; import java.util.Calendar; public class VeDate { /** * 获取现在时间 * * @ ...

  9. Java 8 时间日期库的20个使用演示样例

    除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务演示样例来学习怎样使用Java 8的这套API.Java对日 ...

  10. Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题

    LocalDate. LocalTime. LocalDateTime是Java 8开始提供的时间日期API,主要用来优化Java 8以前对于时间日期的处理操作.然而,我们在使用Spring Clou ...

最新文章

  1. 理解 UDDI(统一描述、发现和集成)
  2. 加薪方式的真相!你是哪一种?
  3. 递归学习五--折半查找--java
  4. 性能测试应该怎么做?
  5. Trie Tree 实现中文分词器
  6. ArcGIS Desktop开发基础(转)
  7. Knowledge Test about Match
  8. Linux 创建网页服务,Linux使用Node.js建立访问静态网页的服务实例详解
  9. vue 对象继承_JS面向对象—对象的继承
  10. dockerfile安装jenkins 并配置构建工具(node、npm、maven、git)
  11. 信息安全技术及应用 常规加密技术
  12. nds android7.0模拟器,nds最佳MD模拟器jEnesisDS 0.7更新
  13. 怎样打开VOIP与SIP
  14. 1919:【02NOIP普及组】选数
  15. 通信行业英文缩写整理(待更新)
  16. 【软件测试】浅谈API功能测试
  17. Web服务小试——天气预报
  18. C++编程,输入密码时显示*号
  19. 5.IP地址介绍及VLSM
  20. 【.NETCore开源】开弓没有回头箭

热门文章

  1. win8计算机修改mac,快捷MAC地址修改器
  2. 不用无限手套,人人都能开发 BI 系统
  3. 具体数学第一章习题题解(8,9,10,11)
  4. python PIL图片转PDF
  5. 网页中嵌入网易云音乐播放器
  6. PostgresSQL弱密码导致命令执行
  7. 大数据下的图片类别以及图片爬取详细的过程(一)
  8. 【50 笔试真题 C++】堆棋子
  9. 002 离散时间傅里叶分析
  10. 微创器械行业调研报告 - 市场现状分析与发展前景预测