package com.jfai.kg.kafkacomsu.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.apache.commons.lang.time.DateUtils;
/**
* @Package com.jfai.kg.kafkacomsu.util
* @author wanglf
* @Description: 日期工具类
* @date 2018年6月30日14:43:25
* @version 2.0.1
* @detail 比上一个版本功能增强..
*/
public class DateUtil {
public static final String DEFAULT_FORMAT_PATTERN = "yyyy-MM-dd HH:mm:ss";
public static final String DATE_FORMAT_PATTERN = "yyyy-MM-dd";
public static final String CHINA_FORMAT_PATTERN = "yyyy年MM月dd日";
public static final String TIME_FORMAT_PATTERN = "HH:mm:ss";
public static final String ORDER_FORMAT_PATTERN = "yyyyMMddHHmmss";
public static final String LOGGER_FORMAT_PATTERN = "yyyy-MM-dd HH:mm:ss:SSS";
public static final String CHINA_FORMAT_PATTERN_EX = "yyyy年MM月dd日 HH时mm分ss秒";
public static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* 获得当前时间,返回格式为yyyy-MM-dd HH:mm:ss
*/
public static String getCurrentTimeString() {
return format.format(new Date());
}
public static String getDateString() {
return getCurrentTimeString();
}
public static String getDateString(Date date) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return format.format(date);
}
public static String getDateString(Date date, String dateFormatString) {
SimpleDateFormat f = new SimpleDateFormat(dateFormatString);
return f.format(date);
}
public static Date getDate(String dateString, String dateFormatString) throws ParseException {
SimpleDateFormat f = new SimpleDateFormat(dateFormatString);
return f.parse(dateString);
}
public static Date getDateFromString(String dateString) throws ParseException {
return format.parse(dateString);
}
public static Date getDateFromDateString(String dateString, String dateFormatString) throws ParseException {
SimpleDateFormat f = new SimpleDateFormat(dateFormatString);
return f.parse(dateString);
}
public static Date getYesterday() {
Calendar cale = Calendar.getInstance();
cale.add(Calendar.DATE, -1);
return cale.getTime();
}
/**
* @param date
* @return
* @Description: 返回返回年份
*/
public static Integer getYear(Date date) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
String year = formatter.format(date);
return Integer.parseInt(year);
}
/**
* @param date
* @return
* @Description: 返回月份
*/
public static Integer getMonth(Date date) {
SimpleDateFormat formatter = new SimpleDateFormat("MM");
String month = formatter.format(date);
return Integer.parseInt(month);
}
/**
* @param date
* @return
* @Description: 返回天数
*/
public static Integer getDay(Date date) {
SimpleDateFormat formatter = new SimpleDateFormat("dd");
String day = formatter.format(date);
return Integer.parseInt(day);
}
/**
* 获得当前月的第一天,返回格式为yyyy-MM-dd HH:mm:ss
*/
public static String getFirstDayOfMonth() {
Calendar cale = Calendar.getInstance();
cale.set(Calendar.DAY_OF_MONTH, 1);
return format.format(cale.getTime());
}
/**
* 获得当前月的最后一天,返回格式为yyyy-MM-dd HH:mm:ss
*/
public static String getLastDayOfMonth() {
Calendar cale = Calendar.getInstance();
cale.add(Calendar.MONTH, 1);
cale.set(Calendar.DAY_OF_MONTH, 0);
return format.format(cale.getTime());
}
/**
* 获得下个月的第一天,返回格式为yyyy-MM-dd HH:mm:ss
*/
public static String getFirstDayOfNextMonth() {
Calendar cale = Calendar.getInstance();
cale.add(Calendar.MONTH, 1);
cale.set(Calendar.DAY_OF_MONTH, 1);
return format.format(cale.getTime());
}
/**
* @Description: 得到当前星期数
*/
public static int getCurrentDayWeekDay() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
return calendar.get(Calendar.DAY_OF_WEEK) - 1;
}
/**
* 获取系统当前时间的上几天/周/月/年或者以后几天/周/月/年的时间
*
* @param type
* :1 天 2 周 3 月 4 年
* @param count
* :-1 上一 1 下一 -2 上二 2 下二...
* @param dateFormatString
* :返回的时间样式,如:yyyy-MM-dd hh:mm:ss
*/
public static String getSomeTimes(int type, int count, String dateFormatString) {
Date date = null;
Calendar curr = Calendar.getInstance();
switch (type) {
case 1:
curr.set(Calendar.DAY_OF_MONTH, curr.get(Calendar.DAY_OF_MONTH) + count);
date = curr.getTime();
break;
case 2:
curr.set(Calendar.DAY_OF_MONTH, curr.get(Calendar.DAY_OF_MONTH) + 7 * count);
date = curr.getTime();
break;
case 3:
curr.set(Calendar.MONTH, curr.get(Calendar.MONTH) + count);
date = curr.getTime();
break;
case 4:
curr.set(Calendar.YEAR, curr.get(Calendar.YEAR) + count);
date = curr.getTime();
break;
default:
break;
}
SimpleDateFormat f = new SimpleDateFormat(dateFormatString);
return f.format(date);
}
/**
* @param date1
* @param date2
* @return
* @Description: 返回两个日期是否是相同的天数
*/
public static boolean isSameDay(Date date1, Date date2) {
return DateUtils.isSameDay(date1, date2);
}
/**
*
* @param str 日期字符串
* @param formatStr 日期格式化字符串
* @return
* @Description: 验证日期字符串合法性
*/
public static boolean validateDateStr(String str, String formatStr) {
boolean isSuccess = true;
SimpleDateFormat format = new SimpleDateFormat(formatStr);
try {
// 设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01
format.setLenient(false);
format.parse(str);
} catch (ParseException e) {
// e.printStackTrace();
// 如果throw java.text.ParseException或者NullPointerException,就说明格式不对
isSuccess = false;
}
return isSuccess;
}
/**
*
* @param str 日期字符串
* @param formatStr 日期格式化字符串
* @return
* @Description: 验证日期字符串合法性
*/
public static boolean checkDateStr(String str, String formatStr) {
return validateDateStr(str, formatStr);
}
public static void main(String[] args) {
System.out.println(isSameDay(getYesterday(), new Date()));
}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.apache.commons.lang.time.DateUtils;
/**
* @Package com.jfai.kg.kafkacomsu.util
* @author wanglf
* @Description: 日期工具类
* @date 2018年6月30日14:43:25
* @version 2.0.1
* @detail 比上一个版本功能增强..
*/
public class DateUtil {
public static final String DEFAULT_FORMAT_PATTERN = "yyyy-MM-dd HH:mm:ss";
public static final String DATE_FORMAT_PATTERN = "yyyy-MM-dd";
public static final String CHINA_FORMAT_PATTERN = "yyyy年MM月dd日";
public static final String TIME_FORMAT_PATTERN = "HH:mm:ss";
public static final String ORDER_FORMAT_PATTERN = "yyyyMMddHHmmss";
public static final String LOGGER_FORMAT_PATTERN = "yyyy-MM-dd HH:mm:ss:SSS";
public static final String CHINA_FORMAT_PATTERN_EX = "yyyy年MM月dd日 HH时mm分ss秒";
public static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* 获得当前时间,返回格式为yyyy-MM-dd HH:mm:ss
*/
public static String getCurrentTimeString() {
return format.format(new Date());
}
public static String getDateString() {
return getCurrentTimeString();
}
public static String getDateString(Date date) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return format.format(date);
}
public static String getDateString(Date date, String dateFormatString) {
SimpleDateFormat f = new SimpleDateFormat(dateFormatString);
return f.format(date);
}
public static Date getDate(String dateString, String dateFormatString) throws ParseException {
SimpleDateFormat f = new SimpleDateFormat(dateFormatString);
return f.parse(dateString);
}
public static Date getDateFromString(String dateString) throws ParseException {
return format.parse(dateString);
}
public static Date getDateFromDateString(String dateString, String dateFormatString) throws ParseException {
SimpleDateFormat f = new SimpleDateFormat(dateFormatString);
return f.parse(dateString);
}
public static Date getYesterday() {
Calendar cale = Calendar.getInstance();
cale.add(Calendar.DATE, -1);
return cale.getTime();
}
/**
* @param date
* @return
* @Description: 返回返回年份
*/
public static Integer getYear(Date date) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
String year = formatter.format(date);
return Integer.parseInt(year);
}
/**
* @param date
* @return
* @Description: 返回月份
*/
public static Integer getMonth(Date date) {
SimpleDateFormat formatter = new SimpleDateFormat("MM");
String month = formatter.format(date);
return Integer.parseInt(month);
}
/**
* @param date
* @return
* @Description: 返回天数
*/
public static Integer getDay(Date date) {
SimpleDateFormat formatter = new SimpleDateFormat("dd");
String day = formatter.format(date);
return Integer.parseInt(day);
}
/**
* 获得当前月的第一天,返回格式为yyyy-MM-dd HH:mm:ss
*/
public static String getFirstDayOfMonth() {
Calendar cale = Calendar.getInstance();
cale.set(Calendar.DAY_OF_MONTH, 1);
return format.format(cale.getTime());
}
/**
* 获得当前月的最后一天,返回格式为yyyy-MM-dd HH:mm:ss
*/
public static String getLastDayOfMonth() {
Calendar cale = Calendar.getInstance();
cale.add(Calendar.MONTH, 1);
cale.set(Calendar.DAY_OF_MONTH, 0);
return format.format(cale.getTime());
}
/**
* 获得下个月的第一天,返回格式为yyyy-MM-dd HH:mm:ss
*/
public static String getFirstDayOfNextMonth() {
Calendar cale = Calendar.getInstance();
cale.add(Calendar.MONTH, 1);
cale.set(Calendar.DAY_OF_MONTH, 1);
return format.format(cale.getTime());
}
/**
* @Description: 得到当前星期数
*/
public static int getCurrentDayWeekDay() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
return calendar.get(Calendar.DAY_OF_WEEK) - 1;
}
/**
* 获取系统当前时间的上几天/周/月/年或者以后几天/周/月/年的时间
*
* @param type
* :1 天 2 周 3 月 4 年
* @param count
* :-1 上一 1 下一 -2 上二 2 下二...
* @param dateFormatString
* :返回的时间样式,如:yyyy-MM-dd hh:mm:ss
*/
public static String getSomeTimes(int type, int count, String dateFormatString) {
Date date = null;
Calendar curr = Calendar.getInstance();
switch (type) {
case 1:
curr.set(Calendar.DAY_OF_MONTH, curr.get(Calendar.DAY_OF_MONTH) + count);
date = curr.getTime();
break;
case 2:
curr.set(Calendar.DAY_OF_MONTH, curr.get(Calendar.DAY_OF_MONTH) + 7 * count);
date = curr.getTime();
break;
case 3:
curr.set(Calendar.MONTH, curr.get(Calendar.MONTH) + count);
date = curr.getTime();
break;
case 4:
curr.set(Calendar.YEAR, curr.get(Calendar.YEAR) + count);
date = curr.getTime();
break;
default:
break;
}
SimpleDateFormat f = new SimpleDateFormat(dateFormatString);
return f.format(date);
}
/**
* @param date1
* @param date2
* @return
* @Description: 返回两个日期是否是相同的天数
*/
public static boolean isSameDay(Date date1, Date date2) {
return DateUtils.isSameDay(date1, date2);
}
/**
*
* @param str 日期字符串
* @param formatStr 日期格式化字符串
* @return
* @Description: 验证日期字符串合法性
*/
public static boolean validateDateStr(String str, String formatStr) {
boolean isSuccess = true;
SimpleDateFormat format = new SimpleDateFormat(formatStr);
try {
// 设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01
format.setLenient(false);
format.parse(str);
} catch (ParseException e) {
// e.printStackTrace();
// 如果throw java.text.ParseException或者NullPointerException,就说明格式不对
isSuccess = false;
}
return isSuccess;
}
/**
*
* @param str 日期字符串
* @param formatStr 日期格式化字符串
* @return
* @Description: 验证日期字符串合法性
*/
public static boolean checkDateStr(String str, String formatStr) {
return validateDateStr(str, formatStr);
}
public static void main(String[] args) {
System.out.println(isSameDay(getYesterday(), new Date()));
}
}