Java中Date类型的工具类
package com.mytripod.util; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * @author Mytripod * @create 2018-09-30 21:25 */ public class DateUtil { public static String DatePattern = "yyyy-MM-dd"; public static String DateTimePattern = "yyyy-MM-dd HH:mm"; public static Date parseDate(String source) { return parse(source, DatePattern); } public static Date parseDateTime(String source) { if(source.trim().length() == 10) source = source + " 00:00"; return parse(source, DateTimePattern); } public static Date parse(String source, String patten) { if (StringUtil.isEmpty(source)) return null; DateFormat format; try { format = new SimpleDateFormat(patten); } catch (Exception e) { format = new SimpleDateFormat(DateTimePattern); } Date date; try { date = format.parse(source); } catch (Exception e) { date = null; } return date; } public static String formatDate(Date date) { return format(date, DatePattern); } public static String formatDateTime(Date date) { return format(date, DateTimePattern); } public static String format(Date date, String patten) { if (date == null) return ""; DateFormat format; try { format = new SimpleDateFormat(patten); } catch (Exception e) { format = new SimpleDateFormat(DateTimePattern); } return format.format(date); } public static String getFormatBeforeOrAfterDate(int offset) { return getFormatBeforeOrAfterDay(offset, DatePattern); } public static String getFormatBeforeOrAfterDateTime(int offset) { return getFormatBeforeOrAfterDay(offset, DateTimePattern); } public static String getFormatBeforeOrAfterDay(int offset, String patten) { return format(getBeforeOrAfterDay(offset), patten); } public static Date getBeforeOrAfterDay(int offset) { if (offset == 0) return new Date(); Calendar c = Calendar.getInstance(); c.add(Calendar.DATE, offset); return c.getTime(); } public static int getYear() { return getYear(new Date()); } public static int getMonth() { return getMonth(new Date()); } public static int getDayOfWeek() { return getDayOfWeek(new Date()); } public static int getDayOfMonth() { return getDayOfMonth(new Date()); } public static int getDayOfYear() { return getDayOfYear(new Date()); } public static int getYear(Date date) { return get(date, Calendar.YEAR); } public static int getMonth(Date date) { return get(date, Calendar.MONTH) + 1; } public static int getDayOfWeek(Date date) { int day = get(date, Calendar.DAY_OF_WEEK); return day == 0 ? 7 : get(date, Calendar.DAY_OF_WEEK) - 1; } public static int getDayOfMonth(Date date) { return get(date, Calendar.DAY_OF_MONTH); } public static int getDayOfYear(Date date) { return get(date, Calendar.DAY_OF_YEAR); } private static Calendar getCalendar(Date date) { Calendar c = Calendar.getInstance(); if (date != null) c.setTime(date); return c; } private static int get(Date date, int field) { Calendar c = getCalendar(date); return c.get(field); } public static boolean compareDateTime(String s1, String s2) { return compare(parseDateTime(s1), parseDateTime(s2)); } public static boolean compareDateTime(String s, Date date) { return compare(parseDateTime(s), date); } public static boolean compareDateTime(Date date, String s) { return compare(date, parseDateTime(s)); } public static boolean compareDate(String s1, String s2) { return compare(parseDate(s1), parseDate(s2)); } public static boolean compareDate(String s, Date date) { return compare(parseDate(s), date); } public static boolean compareDate(Date date, String s) { return compare(date, parseDate(s)); } public static boolean compare(String s1, String patten1, String s2, String patten2) { return compare(parse(s1, patten1), parse(s2, patten2)); } public static boolean compare(String s, String patten, Date date) { return compare(parse(s, patten), date); } public static boolean compare(Date date, String s, String patten) { return compare(date, parse(s, patten)); } public static boolean compare(Date d1, Date d2) { if (d1 == null || d2 == null) throw new IllegalArgumentException(); return d1.after(d2); } //获取两个日期的间隔天数 public static long getDiffDays (String strdate1,String strdate2){ long diff = 0; try{ Date date1 = parseDate(strdate1); Date date2 = parseDate(strdate2); diff = date2.getTime() - date1.getTime(); diff = diff/1000/60/60/24; } catch (Exception e) { e.printStackTrace(); } return diff; } //获取结算周期开始日期:xxxx-xx-26 public static String getFromDate(String date){ return getFromDate(parseDate(date)); } public static String getFromDate(Date date){ String fromDate = ""; int year = getYear(date); int month = getMonth(date); int day = getDayOfMonth(date); if (day <= 25) { if(month == 1){ month =12; year = year-1; } else month = month-1; } if(month < 10) fromDate = year + "-0" + month + "-" + "26"; else fromDate = year + "-" + month + "-" + "26"; return fromDate; } //获取结算周期结束日期xxxx-xx-01 public static String getEndDate(Date date){ String monthOfThis = getMonthOfThis(formatDate(date)); String endDate = monthOfThis.substring(0, 8)+"25"; return endDate; } public static String getMonthOfThis(String date){ String monthOfThis = ""; Date date_ = parseDate(date); int year = getYear(date_); int month = getMonth(date_); int day = getDayOfMonth(date_); if (day > 25) { if(month == 12){ month =1; year = year + 1; } else month = month+1; } if(month < 10) monthOfThis = year + "-0" + month + "-" + "01"; else monthOfThis = year + "-" + month + "-" + "01"; return monthOfThis; } /** * 获得指定日期的后一天 * @param date * @return */ public static String getNextDay(String date){ Calendar c = Calendar.getInstance(); Date date_ = parseDate(date); c.setTime(date_); int day=c.get(Calendar.DATE); c.set(Calendar.DATE,day+1); return formatDate(c.getTime()); } /** * 获得指定日期的前一天 * @param date * @return */ public static String getlastDay(String date){ Calendar c = Calendar.getInstance(); Date date_ = parseDate(date); c.setTime(date_); int day=c.get(Calendar.DATE); c.set(Calendar.DATE,day-1); return formatDate(c.getTime()); } /** * 获得指定日期的前一个月 * @param date * @return */ public static String getlastMonth(String date){ Calendar c = Calendar.getInstance(); Date date_ = parseDate(date); c.setTime(date_); c.add(Calendar.MONTH, -1); return formatDate(c.getTime()); } /** * 获得某日期相差指定天数的日期 * @param date * @return */ public static String getDateByN(String date,int n){ Calendar c = Calendar.getInstance(); Date date_ = parseDate(date); c.setTime(date_); int day=c.get(Calendar.DATE); c.set(Calendar.DATE,day+n); return formatDate(c.getTime()); } public static void main(String arg[]){ String dateOfBegin = "2018-09-28"; System.out.println(getMonthOfThis(dateOfBegin)); /* String today = DateUtil.formatDate(new Date()); System.out.println(DateUtil.compareDate(today,dateOfBegin)); System.out.println(getlastDay(formatDate(new Date()))); System.out.println(getlastMonth(formatDate(new Date())));*/ } /** * 获得指定日期的前一周 * @param date * @return */ public static String getlastWeek(String date){ Calendar c = Calendar.getInstance(); Date date_ = parseDate(date); c.setTime(date_); int day=c.get(Calendar.DATE); c.set(Calendar.DATE,day-7); return formatDate(c.getTime()); } }
Java中Date类型的工具类的更多相关文章
- java中excel导入\导出工具类
1.导入工具 package com.linrain.jcs.test; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import ...
- java中的Arrays这个工具类你真的会用吗
Java源码系列三-工具类Arrays 今天分享java的源码的第三弹,Arrays这个工具类的源码.因为近期在复习数据结构,了解到Arrays里面的排序算法和二分查找等的实现,收益匪浅,决定研读 ...
- java中定义一个CloneUtil 工具类
其实所有的java对象都可以具备克隆能力,只是因为在基础类Object中被设定成了一个保留方法(protected),要想真正拥有克隆的能力, 就需要实现Cloneable接口,重写clone方法.通 ...
- Java中Date类型详解
一.Date类型的初始化 1. Date(int year, int month, int date); 直接写入年份是得不到正确的结果的. 因为java中Date是从1900年开始算的,所以前面的第 ...
- Java中Date类型如何向前向后滚动时间,( 附工具类)
Java中的Date类型向前向后滚动时间(附工具类) 废话不多说,先看工具类: import java.text.SimpleDateFormat; import java.util.Calendar ...
- java中文件操作的工具类
代码: package com.lky.pojo; import java.io.BufferedReader; import java.io.BufferedWriter; import java. ...
- Java中Date类型与String 类型之间的互相转换
Java中String类型和Date类型之间的转换 我们在注册网站的时候,往往需要填写个人信息,如姓名,年龄,出生日期等,在页面上的出生日期的值传递到后台的时候是一个字符串,而我们存入数据库的时候确需 ...
- 在JAVA中自定义连接数据库的工具类
为什么要自定义数据库连接的工具类: 在开发中,我们在对数据库进行操作时,必须要先获取数据库的连接,在上一篇随笔中提到的获取数据库连接的步骤为: 1.定义好4个参数并赋值 2.加载驱动类 3.获取数据库 ...
- Java中的集合Collections工具类(六)
操作集合的工具类Collections Java提供了一个操作Set.List和Map等集合的工具类:Collections,该工具类里提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了将集 ...
随机推荐
- WinHTTrack
看过<大湿教我写.net通用权限框架(1)之菜单导航篇>之后发生的事 http://www.cnblogs.com/wolf-sun/p/3436585.html 用此工具下载别人整站的图 ...
- ThinkPHP3.2.3学习笔记2---模型
一.模型实例化1.直接实例化可以和实例化其他类库一样实例化模型类,例如:$User = new \Home\Model\UserModel();$Info = new \Admin\Model\Inf ...
- poj 3281 Dining【最大流】
记得把牛拆掉!拆成两个点i和i'在中间连一条流量为1的边,来限制每头牛只能选一组 一般来讲是一种物品一个消费者各占一边,但是这里有两个物品,所以考虑把牛放在中间,s向所有的食物连流量为1的边,所有食物 ...
- springboot(六)自动配置原理和@Conditional
官方参考的配置属性:https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#common-appl ...
- VMware 12安装Mac OS X 10.11&解决上网的问题
近日想在Win10上安装Mac OS 玩玩,于是上网搜了相关资源,查看了相关经验分享,开始着手安装.系统很快成功安装,但最大问题是虚拟机中的Mac OS无法上网.费了很长时间,最终看到Ping通结果, ...
- UOJ228 简单数据结构练习题
Description 传送门 维护一个数列, 有以下操作: 对[l,r]同时加上x 把[l,r]开根后下取整. 查询[l,r]之和 n,m \(\leq\)$ 100000, $\(a_i,x \l ...
- [BZOJ3245]最快路线
Description 精明的小R每每开车出行总是喜欢走最快路线,而不是最短路线.很明显,每条道路的限速是小R需要考虑的关键问题.不过有一些限速标志丢失了,于是小R将不知道能开多快.不过有一个合理的方 ...
- bzoj2002 [Hnoi2010]Bounce 弹飞绵羊【LCT】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2002 第一道LCT,调了3天,发现是智障bug,我的青春... 主要参考了黄学长的代码,也没 ...
- android:process用法
1.作用 android:process将组件在新进程中运行. 2.应用范围 可以出现在<application> <activity>, <service>, ...
- jmeter(十七)逻辑控制器
JMeter中的Logic Controller用于为Test Plan中的节点添加逻辑控制器. JMeter中的Logic Controller分为两类:一类用来控制Test Plan执行过程中节点 ...