package com.autoserve.mh.common.util;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class DateUtil {
/**
* format格式:yyyyMMddHHmmssSSS
*/
public static SimpleDateFormat FORMAT1 = new SimpleDateFormat(
"yyyyMMddHHmmssSSS");
/**
* format格式:yyyy-MM-dd HH:mm:ss
*/
public static SimpleDateFormat FORMAT2 = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
/**
* format格式:yyyy-MM-dd
*/
public static SimpleDateFormat FORMAT3 = new SimpleDateFormat("yyyy-MM-dd");
/**
* format格式:yyyyMMdd
*/
public static SimpleDateFormat FORMAT4 = new SimpleDateFormat("yyyyMMdd");
/**
* 正则判断是否日期格式(yyyy-mm-dd)
*/
public static Pattern pat = Pattern.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))");
/**
* 获取当前时间
*
* @return
*/
public static Date getCurrentTime() {
return Calendar.getInstance().getTime();
}
/**
* 获取当前时间格式yyyyMMddHHmmssSSS 的时间
*
* @return
*/
public static String getCurrentTimeStrMill() {
return FORMAT1.format(getCurrentTime());
}
/**
* 获取当前时间格式 yyyy-MM-dd HH:mm:ss 的时间
*
* @return
*/
public static String getCurrentTimeStr() {
return FORMAT2.format(getCurrentTime());
}
/**
* 获取当前时间格式 yyyy-MM-dd 的时间
*
* @return
*/
public static String getCurrentDateStr(Date date) {
return FORMAT3.format(getCurrentTime());
}
/**
* 当前时间+num个月的时间
*
* @return
*/
public static Date monthAdd(int num) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, num);
return cal.getTime();
}
/**
* 判断两个日期的大小(只比较yyyy-MM-dd形式,忽略时分秒)
* <p>
* dt1的日期(如2015-10-06)在dt2(如2015-06-05)之前返回1,之后返回-1,否则返回0
* </p>
*
* @return
*/
public static int compareDate(Date dt1, Date dt2) {
String[] dtStr1 = FORMAT3.format(dt1).split("-");
Calendar cal1 = Calendar.getInstance();
cal1.set(Integer.valueOf(dtStr1[0]), Integer.valueOf(dtStr1[1]),
Integer.valueOf(dtStr1[2]), 0, 0, 0);
String[] dtStr2 = FORMAT3.format(dt2).split("-");
Calendar cal2 = Calendar.getInstance();
cal2.set(Integer.valueOf(dtStr2[0]), Integer.valueOf(dtStr2[1]),
Integer.valueOf(dtStr2[2]), 0, 0, 0);
// 获取日期的long值
if (cal1.getTime().getTime() > cal2.getTime().getTime()) {
return 1;
} else if (cal1.getTime().getTime() < cal2.getTime().getTime()) {
return -1;
} else {
return 0;
}
}
/**
* 判断当前日期与传入日期之间相差的天数(只比较yyyy-MM-dd形式,忽略时分秒)
* <p>
* 当前日期(如2015-10-06),传入日期(如2015-10-01),则返回-5
* </p>
*
* @return
*/
public static int downDate(Date dt1) {
// 超出日数计算
int day = 0;
try {
String shdStr = FORMAT3.format(dt1);
String today = FORMAT3.format(DateUtil.getCurrentTime());
Calendar cal = Calendar.getInstance();
cal.setTime(FORMAT3.parse(shdStr));
long shdTime = cal.getTimeInMillis();
cal.setTime(FORMAT3.parse(today));
long todayTime = cal.getTimeInMillis();
day = Integer.valueOf(String.valueOf((todayTime - shdTime)/(24*3600*1000)));
} catch (Exception e) {
e.printStackTrace();
}
return day;
}
/**
* 比较两个日期的相差月份数
* @param start 开始时间 形如 2015/10/10
* @param end 结束时间 形如 2016/1/1
* @return
*/
public static int getMonth(Date start, Date end) {
if (start.after(end)) {
Date t = start;
start = end;
end = t;
}
Calendar startCalendar = Calendar.getInstance();
startCalendar.setTime(start);
Calendar endCalendar = Calendar.getInstance();
endCalendar.setTime(end);
Calendar temp = Calendar.getInstance();
temp.setTime(end);
temp.add(Calendar.DATE, 1);
int year = endCalendar.get(Calendar.YEAR)
- startCalendar.get(Calendar.YEAR);
int month = endCalendar.get(Calendar.MONTH)
- startCalendar.get(Calendar.MONTH);
if ((startCalendar.get(Calendar.DATE) == 1)
&& (temp.get(Calendar.DATE) == 1)) {
return year * 12 + month + 1;
} else if ((startCalendar.get(Calendar.DATE) != 1)
&& (temp.get(Calendar.DATE) == 1)) {
return year * 12 + month;
} else if ((startCalendar.get(Calendar.DATE) == 1)
&& (temp.get(Calendar.DATE) != 1)) {
return year * 12 + month;
} else {
return (year * 12 + month - 1) < 0 ? 0 : (year * 12 + month);
}
}
}
- 邓博泽 java最全的DateUtil工具类
package com.kld.yijie.web.util; import org.slf4j.Logger;import org.slf4j.LoggerFactory; import java. ...
- 03-自己封装DateUtil工具类
package com.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.u ...
- hutool的DateUtil工具类
1.0.DateUitl(日期时间) 0)坐标 <dependency> <groupId>cn.hutool</groupId> <artifactId&g ...
- hutool包的DateUtil工具类
[首先引入依赖 ] <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-core& ...
- JAVA DateUtil 工具类封装(转)
原文链接 https://blog.csdn.net/wangpeng047/article/details/8295623 作者三次整理后的代码 下载链接 https://www.lanzou ...
- JAVA 日期格式工具类DateUtil.java
DateUtil.java package pers.kangxu.datautils.utils; import java.text.SimpleDateFormat; import java.ut ...
- 日期工具类 - DateUtil.java
日期工具类,提供对日期的格式化和转换方法.获取区间日期.指定日期.每月最后一天等. 源码如下:(点击下载 -DateUtil.java.commons-lang-2.6.jar ) import ja ...
- 使用日期工具类:DateUtil
利用java开发,避免不了String.Date转换,前一天.后一天等问题.给出一个工具类,仅供学习交流. import java.text.DateFormat; import java.text. ...
- android 工具类 DateUtil
提取了一些在开发过程中可能会用到的日期相关的函数作为工具类.供大家參考: /** * 日期操作工具类. * * @author shimiso */ public class DateUtil { p ...
随机推荐
- javascript数据结构-队列
gihub博客地址 队列(Queue)是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插 ...
- 用Canvas写桌球游戏!!!
声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 昨天上班的时候闲着无事,就用Canvas写了个桌球游戏来玩玩....所以就拿这游戏上来水一发.或许对一些刚学canvas的人有帮助. 话说 ...
- 1.从Node.js链接到MongoDB
MongoDB采用了MongoDB Node.js驱动程序作为标准. 1.安装MongoDB驱动 npm install mongoDB npm install mongoose require('m ...
- table的border重合问题
1. table { border-collapse: collapse; } td { border: 1px solid blue; } 用css的方法直接实现 2. border="1 ...
- 无法识别的属性“targetFramework
出现这个错误的原因是NET Framework 版本版本号不对应,iis和网站使用的一致版本就可以了.
- css的用法
Css(Cascading Style Sheets,层叠样式表)是一种页面美化方法,通过编辑Css的对象属性达到美化页面的效果.Css的操作基本单元为对象,使用CSS的感觉就像是使用C++/C中的函 ...
- Spring 定时器Quartz的用法
Spring定时器Quartz的用法也很简单,需要引入quartz-all-1.5.2.jar java代码如下: package com.coalmine.desktop; import java. ...
- javax.validation.ConstraintViolationException---Hibernate后台实体校验
javax.validation.ConstraintViolationException ... 71 moreCaused by: javax.validation.ConstraintViola ...
- 一个漂亮的上传按钮input[type=file]
;;} <div class="input-group xj-file xj-panel-top"> <span class="input-group- ...
- 多个SVG图形集成到一个SVG图形上
SVG:使用XML格式定义图像的可缩放矢量图形(Scalable Vector Graphics). 优点就不多说了,下面看看怎么将多个svg图形集成到一个svg图形上. 如果使用bootstrap框 ...