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));
}
}

  测试结果:

前一天日期为:2019-10-29
该日期的日份:30
该日期的月份:10
该日期的季度:4
该日期的年份:2019
所在月总天数:31
所在季度总天数:92
该日期为本周星期:3
所在周的星期天的日期:2019-11-03
所在周第一天日期:2019-10-28
所在周最后一天日期:2019-11-03
所在月第一天日期:2019-10-01
所在月最后一天日期:2019-10-31
所在季度第一天日期:2019-10-01
所在季度最后一天日期:2019-12-31
所在年前/后半年开始日期:2019-07-01
所在年前/后半年结束日期:2019-12-31
所在年第一天日期:2019-01-01
所在月指定天数日期:2019-10-10
上月指定天数日期:2019-09-10
是否为周日:false
是否为月末:false
是否为季末:false
去年最后一天日期:2018-12-31
属于本年第几天:303
属于本年第几周:44
两个日期的间隔天数:2
两个日期的间隔天数:7
是否为闰年:false

  

Java时间日期格式转换Date转String和String转Date的更多相关文章

  1. Java时间日期格式转换 转自:http://www.cnblogs.com/edwardlauxh/archive/2010/03/21/1918615.html

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

  2. Java时间日期格式转换

    1.这个是系统自动默认的时间格式,或者说是美式格式: Long time = System.currentTimeMillis();                Date date = new Da ...

  3. Java练习 SDUT-2246_时间日期格式转换

    时间日期格式转换 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 对于日期的常用格式,在中国常采用格式的是"年 ...

  4. 【dateFormatSymbols】JAVA特殊日期格式转换

    记录:特殊日期格式转换,如将yyyyMMdd转为01MAY2019 public static final String DATE_VIP_FORMAT = "yyyyMMdd"; ...

  5. [js] js和C# 时间日期格式转换

    下午在搞MVC和EXTJS的日期格式互相转换遇到了问题,我们从.NET服务器端序列化一个DateTime对象的结果是一个字符串格式,如 '/Date(1335258540000)/' 这样的字串. 整 ...

  6. js和C# 时间日期格式转换

    下午在搞MVC和EXTJS的日期格式互相转换遇到了问题,我们从.NET服务器端序列化一个DateTime对象的结果是一个字符串格式,如 '/Date(1335258540000)/' 这样的字串. 整 ...

  7. poj 3751 时间日期格式转换

    题目链接:http://poj.org/problem?id=3751 题目大意:按照要求的格式将输入的时间日期进行转化. #include <iostream> #include < ...

  8. Java实现时间日期格式转换示例

    package com.hanqi.util; import java.text.ParseException; import java.text.SimpleDateFormat; import j ...

  9. java常见日期格式转换以及日期的获取

    package com.test.TestBoot.SingleModel;import java.text.SimpleDateFormat;import java.util.Date;public ...

随机推荐

  1. 233 Matrix 矩阵快速幂

    In our daily life we often use 233 to express our feelings. Actually, we may say 2333, 23333, or 233 ...

  2. LeetCode 122 Best Time to Buy and Sell Stock II(股票买入卖出的最佳时间 II)

    翻译 话说你有一个数组,当中第i个元素表示第i天的股票价格. 设计一个算法以找到最大利润. 你能够尽可能多的进行交易(比如.多次买入卖出股票). 然而,你不能在同一时间来多次交易. (比如.你必须在下 ...

  3. C++对象模型——关键词所带来的差异(第一章)

    1.2    关键词所带来的差异 (A Keyword Distinction) 假设不是为了努力维护与C之间的兼容性.C++能够比方今更简单.举个样例,假设没有八种整数须要支持的话,overload ...

  4. php登录验证及代码实现 含数据库设计 亲測有效

    深夜调代码 试过无数种方法最终见了成效 login.php内容例如以下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN& ...

  5. 虚函数的特点就是执行的时候会下降到子类去执行同名覆盖函数 good

    var t: TBitBtn;begin t:=TBitBtn.Create(nil); t.Name:='BitBtn100'; t.parent :=Self; // 这里下断点end; 一路跟踪 ...

  6. 浅谈EL与JSTL

    讲道理,自己在博大精深的Java世界里还只是一个很小很小的菜鸟.处于成长与学习之中,但学习一个漫长的过程.尤其对于那些知识点我觉得总结是尤为重要的.反正在我看来这段时间里虽然过了很多知识但却是一脸懵逼 ...

  7. bzoj 1029 [ JSOI 2007 ] 建筑抢修 —— 贪心

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1029 想不出来贪心... 首先把任务按结束时间排序: 因为任务一定是越提前做越好,所以从头开 ...

  8. cors解决跨越问题

    转载于http://www.cnblogs.com/jiangwz/p/8142740.html Cross-Origin Resource Sharing(CORS)跨来源资源共享是一份浏览器技术的 ...

  9. React.js初探

    React.js 菜鸟官方解释: React 是一个用于构建用户界面的 JAVASCRIPT 库. React主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图). React 起源 ...

  10. MAC软连接

    在mac上不设置环境变量有的时候也可以直接就访问到了某些文件.这个是为什么呢?答案是用了软连接. 1 查看加载文件 可以使用cat命令查看paths文件 cat etc/paths /usr/loca ...