/**
* 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. 第7章 UserInfo端点(UserInfo Endpoint) - IdentityModel 中文文档(v1.0.0)

    OpenID Connect UserInfo端点的客户端库是作为扩展HttpClient方法提供的. 以下代码将访问令牌发送到UserInfo端点: var client = new HttpCli ...

  2. css公共库——简介中超过长度显示省略号

    在简介.引言中常见:文字只有一排,超出宽度以省略号显示,像这样 实现方法:在公共库定义otw类 .otw{ overflow: hidden; text-overflow: ellipsis; whi ...

  3. SpaceSyntax【空间句法】之DepthMapX学习:第一篇 数据的输入 与 能做哪些分析

    两部分,1需要喂什么东西给软件,2它能干什么(输出什么东西在下一篇讲) 博客园/B站/知乎/CSDN @秋意正寒 转载请在头部附上源地址 目录:https://www.cnblogs.com/onsu ...

  4. devm_xxx机制【转】

    前言 devm是内核提供的基础机制,用于方便驱动开发者所分配资源的自动回收.参考内核文档devres.txt.总的来说,就是驱动开发者只需要调用这类接口分配期望的资源,不用关心释放问题.这些资源的释放 ...

  5. Taurus.MVC 2.3 开源发布:增强属性Require验证功能,自带WebAPI文档生成功能

    背景: 上周,把 Taurus.MVC 在 Linux (CentOS7) 上部署任务完成后. 也不知怎么的,忽然就想给框架集成一下WebAPI文档功能,所以就动手了. 以为一天能搞完,结果,好几天过 ...

  6. FFmpeg命令行工具学习(五):FFmpeg 调整音视频播放速度

    FFmpeg对音频.视频播放速度的调整的原理不一样.下面简单的说一下各自的原理及实现方式: 一.调整视频速率 调整视频速率的原理为:修改视频的pts,dts 实现: ffmpeg -i input.m ...

  7. 数组for循环查找范围

    数组for循环查找范围,如果是判读是否在键值之间,如$array[$i],那么接邻的元素不能用$array[$i+1]或者$array[$i-1]只能用$array[$i++]

  8. mysql中截取指定字符前后的字符串

    使用SUBSTRING_INDEX()函数substring_index(str,delim,count) str:要处理的字符串 delim:分隔符 count:分隔符计数 例子取出上述表中数组的第 ...

  9. Python爬虫9-request包介绍及应用

    GitHub代码练习地址:1.两种简单get请求方法:https://github.com/Neo-ML/PythonPractice/blob/master/SpiderPrac13_request ...

  10. 一行一行手敲webpack4配置

    代码:github 一.webpack4--基本配置 这一部分通过webpack的基本配置,使用loader对图片和样式进行打包,从而了解webpack4简单的用方法,保证自己能够配置正确,提升学习动 ...