/**
* 00
* 描述:传入Date date.转为 String yyyyMMdd.
* 【时间 2019-04-18 15:41:12 作者 陶攀峰】
*/
public static String getDateToString(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return new SimpleDateFormat("yyyyMMdd").format(calendar.getTime());
}

0描述:传入Date date.返回String yyyyMMdd.

 /**
* 01
* 描述:获取传入日期前一天 .
* 传入String yyyyMMdd.返回String yyyyMMdd.
* 【时间 2019-04-15 16:20:44 作者 陶攀峰】
*/
public static String getYesterday(String y_date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(simpleDateFormat.parse(y_date));
} catch (ParseException e) {
e.printStackTrace();
}
calendar.add(Calendar.DATE, - 1);
return simpleDateFormat.format(calendar.getTime());
}

1描述:获取传入日期前一天 .

 /**
* 02
* 描述:获取传入日期前七天 .
* 传入String yyyyMMdd.返回String yyyyMMdd.
* 【时间 2019-04-15 16:20:56 作者 陶攀峰】
*/
public static String getBeforeSevenDay(String y_date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(simpleDateFormat.parse(y_date));
} catch (ParseException e) {
e.printStackTrace();
}
calendar.add(Calendar.DATE, - 7);
return simpleDateFormat.format(calendar.getTime());
}

2描述:获取传入日期前七天 .

 /**
* 03
* 描述:获取传入日期前六天 .
* 传入String yyyyMMdd.返回String yyyyMMdd.
* 【时间 2019-04-15 16:21:07 作者 陶攀峰】
*/
public static String getBeforeSixDay(String y_date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(simpleDateFormat.parse(y_date));
} catch (ParseException e) {
e.printStackTrace();
}
calendar.add(Calendar.DATE, - 6);
return simpleDateFormat.format(calendar.getTime());
}

3描述:获取传入日期前六天 .

 /**
* 04
* 描述:获取传入日期所在月的第一天.
* 传入String yyyyMMdd.返回String yyyyMMdd.
* 【时间 2019-04-15 16:21:17 作者 陶攀峰】
*/
public static String getNowMonthFirstDay(String y_date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(simpleDateFormat.parse(y_date));
} catch (ParseException e) {
e.printStackTrace();
}
calendar.set(Calendar.DAY_OF_MONTH, 1);
return simpleDateFormat.format(calendar.getTime());
}

4描述:获取传入日期所在月的第一天.

     /**
* 05
* 描述:获取传入日期所在月的最后一天.
* 传入String yyyyMMdd.返回String yyyyMMdd.
* 【时间 2019-04-15 16:21:28 作者 陶攀峰】
*/
public static String getNowMonthFinallyDay(String y_date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(simpleDateFormat.parse(y_date));
} catch (ParseException e) {
e.printStackTrace();
}
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
return simpleDateFormat.format(calendar.getTime());
}

5描述:获取传入日期所在月的最后一天.

     /**
* 06
* 描述:获取传入日期上个月的第一天.
* 传入String yyyyMMdd.返回String yyyyMMdd.
* 【时间 2019-04-15 16:21:38 作者 陶攀峰】
*/
public static String getLastMonthFirstDay(String y_date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(simpleDateFormat.parse(y_date));
} catch (ParseException e) {
e.printStackTrace();
}
calendar.add(Calendar.MONTH, -1);// 月份减一
calendar.set(Calendar.DAY_OF_MONTH, 1);
return simpleDateFormat.format(calendar.getTime());
}

6描述:获取传入日期上个月的第一天.

     /**
* 07
* 描述:获取传入日期上个月的最后一天.
* 传入String yyyyMMdd.返回String yyyyMMdd.
* 【时间 2019-04-15 16:21:47 作者 陶攀峰】
*/
public static String getLastMonthFinallyDay(String y_date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(simpleDateFormat.parse(y_date));
} catch (ParseException e) {
e.printStackTrace();
}
calendar.add(Calendar.MONTH, -1);// 月份减一
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
return simpleDateFormat.format(calendar.getTime());
}

7描述:获取传入日期上个月的最后一天.

 /**
* 08
* 描述:获取传入时间 + i 天 后的日期.
* 参数格式String yyyyMMdd,int .返回String yyyyMMdd .
* i=0表示今天.i=1表示明天.i=-1表示昨天.
* 【时间 2019-04-15 16:21:57 作者 陶攀峰】
*/
public static String getDayByI(String y_date, int i) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(simpleDateFormat.parse(y_date));
} catch (ParseException e) {
e.printStackTrace();
}
calendar.add(Calendar.DATE, i);
return simpleDateFormat.format(calendar.getTime());
}

8描述:获取传入时间 + i 天 后的日期.

 /**
* 09
* 描述:获取传入时间 + i 月 后的日期.
* 参数格式String yyyyMMdd,int .返回String yyyyMMdd .
* i=0 表示本月. i=1表示下个月 .i=-1表示上个月
* 【时间 2019-04-15 16:22:06 作者 陶攀峰】
*/
public static String getMonthByI(String y_date,int i) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(simpleDateFormat.parse(y_date));
} catch (ParseException e) {
e.printStackTrace();
}
calendar.add(Calendar.MONTH, i);// i为0 表示本月 i为1表示下个月 i为-1表示上个月
return simpleDateFormat.format(calendar.getTime()).substring(0, 6);
}

9描述:获取传入时间 + i 月 后的日期.

     /**
* 10
* 描述:获取当前系统时间.
* 得到String yyyyMMdd .
* 【时间 2019-04-15 16:22:15 作者 陶攀峰】
*/
public static String getNowSystemDay() {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
return simpleDateFormat.format(calendar.getTime());
}

10描述:获取当前系统时间.

 /**
* 11
* 描述:获取当前系统时间的小时数(16:12 就返回16).
* 返回int.
* 【时间 2019年4月15日下午4:11:30 作者 陶攀峰】
*/
public static int getNowSystemHour() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
int hour = calendar.get(Calendar.HOUR_OF_DAY);
return hour;
}

11描述:获取当前系统时间的小时数(16:12 就返回16).

 /**
* 12
* 描述:根据传进来的时间获取年份.
* 参数格式String yyyyMMdd.返回int.
* 【时间 2019-04-16 08:28:21 作者 陶攀峰】
*/
public static int getYear(String y_date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(simpleDateFormat.parse(y_date));
} catch (ParseException e) {
e.printStackTrace();
}
int year = calendar.get(Calendar.YEAR);
return year;
}

12描述:根据传进来的时间获取年份.

 /**
* 13
* 描述:根据传进来的时间获取月份.
* 参数格式String yyyyMMdd.返回int.
* 【时间 2019-04-16 08:30:45 作者 陶攀峰】
*/
public static int getMonth(String y_date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(simpleDateFormat.parse(y_date));
} catch (ParseException e) {
e.printStackTrace();
}
int month = calendar.get(Calendar.MONTH) + 1;
return month;
}

13描述:根据传进来的时间获取月份.

     /**
* 14
* 描述:根据传进来的时间获取天数
* 参数格式String yyyyMMdd.返回int.
* 【时间 2019-04-16 08:31:19 作者 陶攀峰】
*/
public static int getDay(String y_date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(simpleDateFormat.parse(y_date));
} catch (ParseException e) {
e.printStackTrace();
}
int day = calendar.get(Calendar.DATE);
return day;
}

14描述:根据传进来的时间获取天数

 /**
* 15
* 描述:根据指定年和月 得到指定月的天数.
* 传入int year,int month. 返回 int.
* 【时间 2019-04-16 08:31:59 作者 陶攀峰】
*/
public static int getDayByYearMonth(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);// 日期回滚一天,也就是最后一天
int maxDate = a.get(Calendar.DATE);
return maxDate;
}

15描述:根据指定年和月 得到指定月的天数.

 /**
* 16
* 描述:把yyyyMMdd格式改为yyyy-MM-dd格式.
* 参数格式String yyyyMMdd. 返回String yyyy-MM-dd.
* 【时间 2019-04-16 08:33:20 作者 陶攀峰】
*/
public static String ChangeDateFormat(String y_date) {
y_date = y_date.substring(0, 4) + "-" + y_date.substring(4, 6) + "-" + y_date.substring(6, 8);
return y_date;
}

16描述:把yyyyMMdd格式改为yyyy-MM-dd格式.

 /**
* 17
* 描述:获取下个月一号的数据.
* 传入String yyyyMMdd.返回String yyyyMMdd.
* 例如:20181005 >>> 20181101 .
* 【时间 2019-04-16 08:34:43 作者 陶攀峰】
*/
public static String getNextMonthFirstDay(String y_date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Date date = null;
try {
date = sdf.parse(y_date);// 把设置的日期转换为日期格式
} catch (ParseException e) {
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();// 日历对象
calendar.setTime(date);// 设置日期
calendar.set(Calendar.DAY_OF_MONTH, 1);// 把当前日期天数设置为01
calendar.add(Calendar.MONTH, 1);// 把月份减1
return sdf.format(calendar.getTime());
}

17描述:获取下个月一号的数据.

 /**
* 18
* 描述:获取周一.
* i=0 表示传入时间所在周的周一,i=1表示下周一,i=-1表示上周一.
* 传入String yyyyMMdd,int. 返回 String yyyyMMdd.
* 【时间 2019-04-16 08:45:09 作者 陶攀峰】
*/
public static String getMondayByIWeek(String y_date,int i) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Date date = null;
try {
date = sdf.parse(y_date);// 把设置的日期转换为日期格式
} catch (ParseException e) {
e.printStackTrace();
}
Calendar cal = Calendar.getInstance();
cal.setTime(date); // 获得当前日期是一个星期的第几天
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
if (1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
}
// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
cal.setFirstDayOfWeek(Calendar.MONDAY);
// 获得当前日期是一个星期的第几天
int day = cal.get(Calendar.DAY_OF_WEEK);
// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
cal.add(Calendar.DATE, 7 * i);
return sdf.format(cal.getTime());
}

18描述:获取周一. i=0 表示传入时间所在周的周一,i=1表示下周一,i=-1表示上周一.

 /**
* 19
* 描述:返回日期所在星期几.星期一 为1、星期日为7.
* 传入日期String yyyyMMdd. 返回int .
* 【时间 2019-04-16 08:48:30 作者 陶攀峰】
*/
public static int getWeekNumber(String y_date) {
Calendar cal = Calendar.getInstance();
try {
cal.setTime(new SimpleDateFormat("yyyyMMdd").parse(y_date));
} catch (ParseException e) {
e.printStackTrace();
}
return cal.get(Calendar.DAY_OF_WEEK)-1;
}

19描述:返回日期所在星期几.星期一 为1、星期日为7.

 /**
* 20
* 描述:周同期【开始>>以周一为开始】.
* 【传入时间的上一年>>所在周的第一天>>(距离年周数相同>>一年第几周)】.
* 例【2018-01-10>>2017-01-02】.
* 【时间 2019年3月5日下午3:46:07 作者 陶攀峰】
*/
public static String getWeekSamePhaseStart(String y_date) {
SimpleDateFormat sdf = new SimpleDateFormat( "yyyyMMdd");
Date date=null;
try {
date = sdf.parse(y_date);//把设置的日期转换为日期格式
} catch (ParseException e) {
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();//日历对象
calendar.setTime(date);//设置日期
int week_of_year=calendar.get(Calendar.WEEK_OF_YEAR);//当前日期是今年的第多少周【2】
int year=calendar.get(Calendar.YEAR)-1;//得到今年年份、减去1得到去年年份【2018-1】
calendar.set(year, 0, 1);//设置日期为2017-01-01
int dayofweek=7-calendar.get(Calendar.DAY_OF_WEEK)+1;//【7-1+1】
week_of_year=week_of_year-2;//【2-2】
calendar.add(Calendar.DAY_OF_YEAR, week_of_year*7+dayofweek);//【0*7+7】【此时日期由2017-01-01>>2017-01-08】
int day_of_week = calendar.get(Calendar. DAY_OF_WEEK) - 1;//传入时间是本周的第几天【因为DAY_OF_WEEK以周日开始、所以减1】【1-1】
if (day_of_week == 0 ) {//因为DAY_OF_WEEK以周日开始、所以原本的周日是第一天 改为第七天
day_of_week = 7 ;
}
calendar.add(Calendar.DATE , -day_of_week + 1 );//【-7+1】【此时日期由2017-01-08>>2017-01-02】
return sdf.format(calendar.getTime());
}

20描述:周同期【开始>>以周一为开始】.【传入时间的上一年>>所在周的第一天>>(距离年周数相同>>一年第几周)】.例【2018-01-10>>2017-01-02】.

     /**
* 21
* 描述:周同期【结束>>以周一为开始】.
* 【上一年和传入时间所在同一个周的第一天>>(距离年周数相同>>一年第几周)(距离周天数相同>>一周第几天)】.
* 例【2018-01-10>>2017-01-04】.
* 【时间 2019年3月5日下午3:47:26 作者 陶攀峰】
*/
public static String getWeekSamePhaseEnd(String y_date) {
SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd");
Date date=null;
try {
date = sdf.parse(y_date);//把设置的日期转换为日期格式
} catch (ParseException e) {
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();//日历对象
calendar.setTime(date);//设置日期
int day_of_week0 = calendar.get(Calendar. DAY_OF_WEEK) - 1;//传入时间是本周的第几天【因为DAY_OF_WEEK以周日开始、所以减1】【4-1】
if (day_of_week0 == 0 ) {//因为DAY_OF_WEEK以周日开始、所以原本的周日是第一天 改为第七天
day_of_week0 = 7 ;
}
int week_of_year=calendar.get(Calendar.WEEK_OF_YEAR);//当前日期是今年的第多少周【2】
int year=calendar.get(Calendar.YEAR)-1;//得到今年年份、减去1得到去年年份【2018-1】
calendar.set(year, 0, 1);//设置日期为2017-01-01
int dayofweek=7-calendar.get(Calendar.DAY_OF_WEEK)+1;//【7-1+1】
week_of_year=week_of_year-2;//【2-2】
calendar.add(Calendar.DAY_OF_YEAR, week_of_year*7+dayofweek);//【0*7+7】【此时日期由2017-01-01>>2017-01-08】
int day_of_week = calendar.get(Calendar. DAY_OF_WEEK) - 1;//传入时间是本周的第几天【因为DAY_OF_WEEK以周日开始、所以减1】【1-1】
if (day_of_week == 0 ) {//因为DAY_OF_WEEK以周日开始、所以原本的周日是第一天 改为第七天
day_of_week = 7 ;
}
calendar.add(Calendar.DATE , -day_of_week + 1 );//【-7+1】【此时日期由2017-01-08>>2017-01-02】
calendar.add(Calendar.DATE, day_of_week0-1);//【3-1】【此时日期由2017-01-02>>2017-01-04】
return sdf.format(calendar.getTime());
}

21描述:周同期【结束>>以周一为开始】.【上一年和传入时间所在同一个周的第一天>>(距离年周数相同>>一年第几周)(距离周天数相同>>一周第几天)】.例【2018-01-10>>2017-01-04】.

 注意:

以后有新的会更新,若不懂的也可以提问,错误的可以纠正,

如果我这里面没有的 你们也可以提出来 我要会的话,也会写出来~~~

Java关于日期的计算持续汇总~的更多相关文章

  1. Java关于数字工具类~持续汇总~

    /** * 01 * 描述:求int数组中最大值 * [时间 2019年3月5日下午3:21:36 作者 陶攀峰] */ public static int test01(int[]sz) { int ...

  2. Java关于字符串工具类~持续汇总~

    /** * 01 * 描述:String的substring和replace方法使用 * [时间 2019年3月5日下午3:22:08 作者 陶攀峰] */ public static void te ...

  3. Java中使用LocalDate根据日期来计算年龄

    Java中和日期直接相关的类有很多,平时最常用到的就是java.util package下面的Date和Calendar,需要用到格式的时候还会用到java.text.SimpleDateFormat ...

  4. JAVA中日期转换和日期计算的方法

    日期的格式有很多形式,在使用过程中经常需要转换,下面是各种类型转换的使用例子以及日期计算方法的例子. 一.不同格式日期相互转换方法 public class TestDateConvertUtil { ...

  5. Java日期推迟计算、日期大小

    /** * 日期推迟计算 * @param date * @param num * @return java.util.HashMap<java.lang.String,java.lang.St ...

  6. Java初学者作业——编写 Java 程序,在控制台中输入日期,计算该日期是对应年份的第几天。

    返回本章节 返回作业目录 需求说明: 编写 Java 程序,在控制台中输入日期,计算该日期是对应年份的第几天. 实现思路: (1)声明变量 year.month和 date,用于存储日期中的年.月.日 ...

  7. Java 8——日期时间工具库(java.time)

    一.前言 在介绍Java SE 8中新的日期时间库前,先了解下Java 8之前的日期时间工具的诟病. 在Java SE 8前,日期时间工具库在java.util包中,包括: java.util.Dat ...

  8. 【转】JAVA 8 日期/时间(Date Time)API指南

    前言 本来想写下Java 8的日期/时间API,发现已经有篇不错的文章了,那就直接转载吧~ PS:主要内容没变,做了部分修改. 原文链接: journaldev 翻译: ImportNew.com - ...

  9. java获取日期之间的差异

    转载请注明出处.谢谢http://blog.csdn.net/harryweasley/article/details/42121485 当想到要计算差值.我们肯定想的是"2014.12.1 ...

随机推荐

  1. springcloud情操陶冶-springcloud config server(三)

    承接前文springcloud情操陶冶-springcloud config server(二),本文就不讲述server了,就简单阐述下client的应用 前话 config server在引入的时 ...

  2. 详解mybatis映射配置文件

    一  mybatis 映射文件结构 mybatis映射配置文件存在如下顶级元素,且这些元素按照如下顺序被定义. cache – 给定命名空间的缓存配置. cache-ref – 其他命名空间缓存配置的 ...

  3. spring boot 文件上传大小限制

    错误信息 : Spring Boot:The field file exceeds its maximum permitted size of 1048576 bytes. 解决方法一:在启动类添加如 ...

  4. Docker 创建 Crowd3.3.2 以及打通 Jira Software7.12.3和Confluence6.12.2 SSO 单点登录

    目录 目录 1.介绍 1.1.什么是Crowd? 2.Crowd 的官网在哪里? 3.如何下载安装? 4.对 Crowd 进行配置 4.1.破解 Crowd 第一步 4.2.破解 Crowd 第二步, ...

  5. x宝23大洋包邮的老式大朝华MP3播放器简单评测

    (纯兴趣测评,非广告) 最近逛X宝,看到了这个古董级MP3播放器居然还在售,于是脑抽+情怀泛滥买了一个. 然后呢,从遥远的深圳跨越好几千公里邮过来了这个玩意: 那节南孚5号电池是我自己的,是为了对比一 ...

  6. 在linux中访问macos 下的分区。

    花钱的解决方案是找专业的:   Paragon Software  他们家有各种套件,让你在window Linux 都能访问到苹果分区里面的内容. 但是Windows删除了它的驱动之后一开机就蓝屏. ...

  7. CYQ.Data 支持 PostgreSQL 数据库

    前言: 很久之前,就有同学问我CYQ.Data能不能支持下PostgreSQL,之后小做了下调查,发现这个数据库用的人少,加上各种因素,就一直没动手. 前两天,不小心看了一下Github上的消息: 看 ...

  8. Spring的历史及哲学

    Spring的历史和哲学 1.Spring 历史 时间回到2002年,当时正是 Java EE 和 EJB 大行其道的时候,很多知名公司都是采用此技术方案进行项目开发.这时候有一个美国的小伙子认为 E ...

  9. 7.Flask文件上传

     1.1.上传文件和访问上传的文件 upload_file_demo.py from flask import Flask,request,render_template import os from ...

  10. springboot~thymeleaf页面布局的步骤

    参考:https://ultraq.github.io/thymeleaf-layout-dialect/Installation.html 依赖包 注意里面的thymeleaf-layout-dia ...