java 日期比较工具类_java常用日期时间工具类大全

public class DateUtils {

// 默认显示日期的格式

public static final String DATE_FORMAT = "yyyy-MM-dd";

public static final String YEAR_S_MONTH = "yyyy-MM";

public static final String YEAR_MONTH = "yyyyMM";

public static final String TIMEF_FORMAT = "yyyy-MM-dd HH:mm:ss";

// 默认显示日期时间毫秒格式

public static final String MSEL_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";

// 默认显示简体中文日期的格式

public static final String ZHCN_DATE_FORMAT = "yyyy年MM月dd日";

// 默认显示简体中文日期时间的格式

public static final String ZHCN_TIME_FORMAT = "yyyy年MM月dd日HH时mm分ss秒";

// 默认显示简体中文日期时间毫秒格式

public static final String ZHCN_MSEL_FORMAT = "yyyy年MM月dd日HH时mm分ss秒SSS毫秒";

// 获取日期串格式

public static final String DATE_STR_FORMAT = "yyyyMMdd";

// 获取日期时间串格式

public static final String TIME_STR_FORMAT = "yyyyMMddHHmmss";

// 获取日期时间毫秒串格式

public static final String MSEL_STR_FORMAT = "yyyyMMddHHmmssSSS";

// 默认显示日期时间分钟格式

public static final String MSEL_MIU_FORMAT = "yyyy-MM-dd HH:mm";

public static final String MS_MIU_FORMAT = "yyyyMMddHH";

private static DateFormat dateFormat = null;

private static DateFormat dateTimeFormat = null;

private static DateFormat zhcnDateFormat = null;

private static DateFormat zhcnDateTimeFormat = null;

private static DateFormat timeStrFormat = null;

static{

dateFormat = new SimpleDateFormat(DATE_FORMAT);

dateTimeFormat = new SimpleDateFormat(TIMEF_FORMAT);

zhcnDateFormat = new SimpleDateFormat(ZHCN_DATE_FORMAT);

zhcnDateTimeFormat = new SimpleDateFormat(ZHCN_TIME_FORMAT);

timeStrFormat = new SimpleDateFormat(TIME_STR_FORMAT);

}

/**

* 获取今天的日期,格式如:2006-11-09

*

* @return String - 返回今天的日期

*/

public static String getToday(){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT);

sdf.setTimeZone(TimeZone.getDefault());

return (sdf.format(now.getTime()));

}

/**

* 获取今天的日期,格式自定

*

* @param pattern - 设定显示格式

* @return String - 返回今天的日期

*/

public static String getToday(String pattern){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(pattern);

sdf.setTimeZone(TimeZone.getDefault());

return (sdf.format(now.getTime()));

}

/**

* 得到当前时间的前/后若干天的时间 例如当前时间2006-05-16 间隔天数30天,则返回2006-04-16

*

* @param days - 间隔天数

* @return String - 返回当时的时间

*/

public static String getInternalTimeByDay(int days){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT);

sdf.setTimeZone(TimeZone.getDefault());

now.add(Calendar.DATE, days);

return (sdf.format(now.getTime()));

}

/**

* 得到当前时间的前/后若干天的时间 例如当前时间2006-05-16 间隔天数30天,则返回2006-04-16

*

* @param days - 间隔天数

* @param pattern - 设定显示格式

* @return String - 根据显示格式返回当时的时间

*/

public static String getInternalTimeByDay(int days,String pattern){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(pattern);

sdf.setTimeZone(TimeZone.getDefault());

now.add(Calendar.DATE, days);

return (sdf.format(now.getTime()));

}

/**

* 得到当前时间的前/后若干月的时间 例如当前时间2006-05-16 间隔月数3月,则返回2006-02-16

*

* @param months - 间隔月数

* @return - 返回当时的时间

*/

public static String getInternalTimeByMonth(int months){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT);

sdf.setTimeZone(TimeZone.getDefault());

now.add(Calendar.MONTH, months);

return (sdf.format(now.getTime()));

}

/**

* 得到当前时间的前/后若干月的时间 例如当前时间2006-05-16 间隔月数3月,则返回2006-02-16

*

* @param months - 间隔月数

* @param pattern - 设定显示格式

* @return - 根据显示格式返回当时的时间

*/

public static String getInternalTimeByMonth(int months,String pattern){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(pattern);

sdf.setTimeZone(TimeZone.getDefault());

now.add(Calendar.MONTH, months);

return (sdf.format(now.getTime()));

}

/**

* 得到当前时间的前/后若干月的时间 例如当前时间2018-07-16 间隔1年,则返回2019-07-16

* @param years

* @param pattern

* @return

*/

public static String getInternalTimeByYear(int years,String pattern){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(pattern);

sdf.setTimeZone(TimeZone.getDefault());

now.add(Calendar.YEAR, years);

return (sdf.format(now.getTime()));

}

/**

* 得到当前时间的前/后若干月的时间 例如当前时间2018-07-16 间隔1.5年,则返回2021-01-16

* @param years

* @param pattern

* @return

*/

public static String getInternalTimeByYm(int years,int months,String pattern){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(pattern);

sdf.setTimeZone(TimeZone.getDefault());

now.add(Calendar.YEAR, years);

now.add(Calendar.MONTH, months);

return (sdf.format(now.getTime()));

}

/**

* 得到中文日期

*

* @param dateStr - 日期串,格式为“yyyy-MM-dd”

* @return String - 返回中文日期,格式为“yyyy年MM月dd日”

*/

public static String chinaDate(String dateStr){

if(dateStr == null || dateStr.equals("null") || dateStr.equals("")){ return ""; }

java.util.Date d = getDate(dateStr, DATE_FORMAT);

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(ZHCN_DATE_FORMAT);

sdf.setTimeZone(TimeZone.getDefault());

return (sdf.format(d));

}

/**

* 得到中文日期,自定设置格式

*

* @param dateStr - 需要改变格式的时间串

* @param inPattern - 时间串的格式

* @param outPattern - 改为时间串的格式

* @return String - 根据outPattern格式返回时间

*/

public static String alterDateByDynamic(String dateStr,String inPattern,String outPattern){

if(dateStr == null || dateStr.equals("null") || dateStr.equals("")){ return ""; }

java.util.Date d = getDate(dateStr, inPattern);

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(outPattern);

sdf.setTimeZone(TimeZone.getDefault());

return (sdf.format(d));

}

/**

* 比较当前日期和指定日期 return boolean 如果当前日期在指定日期之后返回true否则返回flase

*

* @param dateStr 指定日期

* @param pattern 指定日期的格式

* @return boolean

*/

public static boolean dateCompare(String dateStr,String pattern){

boolean bea = false;

SimpleDateFormat sdf_d = new SimpleDateFormat(pattern);

String isDate = sdf_d.format(new java.util.Date());

java.util.Date date1;

java.util.Date date0;

try{

date1 = sdf_d.parse(dateStr);

date0 = sdf_d.parse(isDate);

if(date0.after(date1)){

bea = true;

}

}catch(ParseException e){

bea = false;

}

return bea;

}

/**

* 比较指定两日期,如果dateStr1晚于dateStr2则return true;

*

* @param dateStr1 指定日期

* @param dateStr2 指定日期

* @param pattern 指定日期的格式

* @return boolean

*/

public static boolean dateCompare(String dateStr1,String dateStr2,String pattern){

boolean bea = false;

SimpleDateFormat sdf_d = new SimpleDateFormat(pattern);

java.util.Date date1;

java.util.Date date0;

try{

date1 = sdf_d.parse(dateStr1);

date0 = sdf_d.parse(dateStr2);

if(date0.after(date1)){

bea = true;

}

}catch(ParseException e){

bea = false;

}

return bea;

}

/**

* 设置间隔数后返回时间

*

* @param type 间隔类型 秒或者天 秒的类型为s,天的类型为d

* @param 间隔数字 比如1秒或者一天

* @return String 返回时间格式为“yyyy-MM-dd HH:mm:ss”

*/

public static String dateAdd(String type,int i){

return dateAdd(type, i, TIMEF_FORMAT);

}

public static String dateAdd(String type,int i,String format){

SimpleDateFormat df = new SimpleDateFormat(format);

String str = getToday(format);

Calendar c = Calendar.getInstance(); // 当时的日期和时间

if(type.equals("s")){

int s = c.get(Calendar.SECOND);

s = s + i;

c.set(Calendar.SECOND, s);

str = df.format(c.getTime());

}else if(type.equals("d")){

int d = c.get(Calendar.DAY_OF_MONTH); // 取出“日”数

d = d + i;

c.set(Calendar.DAY_OF_MONTH, d); // 将“日”数设置回去

str = df.format(c.getTime());

}else if(type.equals("h")){

int d = c.get(Calendar.HOUR_OF_DAY); // 取出“日”数

d = d + i;

c.set(Calendar.HOUR_OF_DAY, d); // 将“日”数设置回去

str = df.format(c.getTime());

}else if(type.equals("m")){

int d = c.get(Calendar.MINUTE); // 取出“分钟”数

d = d + i;

c.set(Calendar.MINUTE, d); // 将“日”数设置回去

str = df.format(c.getTime());

}

return str;

}

public static String dateAdd(String date,String type,int i,String format){

SimpleDateFormat df = new SimpleDateFormat(format);

String str = date;

Calendar c = Calendar.getInstance(); // 当时的日期和时间

c.setTime(getDate(date,format));

if(type.equals("s")){

int s = c.get(Calendar.SECOND);

s = s + i;

c.set(Calendar.SECOND, s);

str = df.format(c.getTime());

}else if(type.equals("d")){

int d = c.get(Calendar.DAY_OF_MONTH); // 取出“日”数

d = d + i;

c.set(Calendar.DAY_OF_MONTH, d); // 将“日”数设置回去

str = df.format(c.getTime());

}else if(type.equals("h")){

int d = c.get(Calendar.HOUR_OF_DAY); // 取出“日”数

d = d + i;

c.set(Calendar.HOUR_OF_DAY, d); // 将“日”数设置回去

str = df.format(c.getTime());

}else if(type.equals("m")){

int d = c.get(Calendar.MINUTE); // 取出“分钟”数

d = d + i;

c.set(Calendar.MINUTE, d); // 将“日”数设置回去

str = df.format(c.getTime());

}

return str;

}

/**

* 得到当前日期,如"2001-03-16".

*

* @version 1.0

*/

public static String curDate(){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

String DATE_FORMAT = "yyyy-MM-dd";

// String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";

// String DATE_FORMAT = "yyyyMMdd";

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT);

sdf.setTimeZone(TimeZone.getDefault());

return (sdf.format(now.getTime()));

}

/**

* 得到当前详细日期、时间,如"2001-03-16 20:34:20".

*/

public static String curTime(){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(TIMEF_FORMAT);

sdf.setTimeZone(TimeZone.getDefault());

return (sdf.format(now.getTime()));

}

/**

* 得到当前详细日期、时间,如"2001-03-16 20:34:20".

*

* @version 1.0

*/

public static String getTimeAfter(int n){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.add(Calendar.MINUTE, n);

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(TIMEF_FORMAT);

sdf.setTimeZone(TimeZone.getDefault());

return (sdf.format(now.getTime()));

}

/**

* 得到当前时间的前/后若干天的时间

*

* @param day - 间隔时间

* @return - 返回当时的时间 例如当前时间2003-05-16 间隔天数30天,则返回2003-04-16

*/

public static String getInternalTime(int days){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(TIMEF_FORMAT);

sdf.setTimeZone(TimeZone.getDefault());

now.add(Calendar.DATE, days);

return (sdf.format(now.getTime()));

}

/**

* 得到当前时间的前/后若干天的时间

*

* @param currentTime - 当前时间

* @param iHour - 间隔时间

* @return - 返回当时的时间 例如当前时间2003-05-16 08:10:10 间隔时间3小时,则返回2003-05-16 05:10:10

*/

public static String getTimeOut(String currentTime,int iHour){

String Time = "";

try{

SimpleDateFormat sdf = new SimpleDateFormat(TIMEF_FORMAT);

java.util.Date result = sdf.parse(currentTime);

Calendar cal = Calendar.getInstance();

cal.setTime(result);

cal.add(Calendar.HOUR, iHour);

Time = sdf.format(cal.getTime());

}catch(Exception e){

e.printStackTrace();

return null;

}

return Time;

}

/**

* 得到当前月底的前/后若干天的时间

*

* @param day - 间隔时间

* @return - 返回当时的时间

*/

public static String getInternalTimeByLastDay(int days){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

String DATE_FORMAT = "yyyy-MM-dd";

// String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";

// String DATE_FORMAT = "yyyyMMdd";

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT);

sdf.setTimeZone(TimeZone.getDefault());

int maxDay = now.getActualMaximum(Calendar.DAY_OF_MONTH);

now.set(Calendar.DATE, maxDay);

now.add(Calendar.DATE, days);

return (sdf.format(now.getTime()));

}

/**

* 得到时间串

*

* @param dateStr String 时间字符串

* @param fmt String 时间格式

* @return String 返回值

*/

public static String getDateStr(String dateStr,String fmt){

try{

if(dateStr == null || dateStr.equals("")){ return ""; }

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(fmt);

java.util.Date d = sdf.parse(dateStr);

String newDate = sdf.format(d);

return newDate;

}catch(Exception e){

// log.debug("\n" + e.getMessage());

}

return "";

}

/**

* 得到时间串

*

* @param dateStr String 时间字符串

* @param fmt String 时间格式

* @return String 返回值

*/

public static java.util.Date getDate(String dateStr){

try{

if(dateStr == null || dateStr.equals("")){ return null; }

// Calendar now = Calendar.getInstance(TimeZone.getDefault());

String DATE_FORMAT = "yyyyMMddHHmmss";

// java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT);

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT);

// sdf.setTimeZone(TimeZone.getDefault());

java.util.Date d = sdf.parse(dateStr);

// java.text.DateFormat df = java.text.DateFormat.getDateTimeInstance();

// java.util.Date d= df.parse(dateStr);

return d;

}catch(Exception e){

e.printStackTrace();

}

return null;

}

/**

* @return 得到当前时间目录例如 030524

*/

public static String getCurrTimeDir(){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

String DATE_FORMAT = "yyMMdd";

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT);

sdf.setTimeZone(TimeZone.getDefault());

return (sdf.format(now.getTime()));

}

/**

* @return 得到上个月月份 如200505

*/

public static String getYesterM(){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.add(Calendar.MONTH, -2);

String DATE_FORMAT = "yyyyMM";

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT);

sdf.setTimeZone(TimeZone.getDefault());

return (sdf.format(now.getTime()));

}

/**

* @return 得到本年度年份 如2005

*/

public static String getYear(){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

// now.add(Calendar.MONTH,-1);

String DATE_FORMAT = "yyyy";

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT);

sdf.setTimeZone(TimeZone.getDefault());

return (sdf.format(now.getTime()));

}

/**

* @return 得到本月月份 如09

*/

public static String getMonth(){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

String DATE_FORMAT = "MM";

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT);

sdf.setTimeZone(TimeZone.getDefault());

return (sdf.format(now.getTime()));

}

/**

* 得到下一个月分,包括年,例如: 2003-1 月份的上一个月份是2002-12

*

* @param year

* @param month

* @return

*/

public static String[] getBeforeMonth(String year,String month){

String[] time = new String[2];

if(month.equals("12")){

time[1] = "1";

time[0] = String.valueOf(Integer.parseInt(year) + 1);

}else{

time[1] = String.valueOf(Integer.parseInt(month) + 1);

time[0] = year;

}

return time;

}

/**

* 得到上一个月

*

* @param year 年

* @param month 月

* @return String[] 0为年,1为月 TODO

*/

public static String[] beforeMonth(String year,String month){

String[] time = new String[2];

if(month.equals("1")){

time[1] = "12";

time[0] = String.valueOf(Integer.parseInt(year) - 1);

}else{

time[1] = String.valueOf(Integer.parseInt(month) - 1);

time[0] = year;

}

return time;

}

/**

* 得到当前日期,按照页面日期控件格式,如"2001-3-16".

*

* @return String TODO

*/

public static String curSingleNumDate(){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

String DATE_FORMAT = "yyyy-M-d";

// String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";

// String DATE_FORMAT = "yyyyMMdd";

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT);

sdf.setTimeZone(TimeZone.getDefault());

return (sdf.format(now.getTime()));

}

/**

* 取自当前日期后的第n天的日期

*

* @param day int 之后n天

* @return String

*/

public static String getDateAfter(int n){

String Time = "";

try{

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Calendar cal = Calendar.getInstance(TimeZone.getDefault());

cal.add(Calendar.DAY_OF_MONTH, n);

Time = sdf.format(cal.getTime());

}catch(Exception e){

e.printStackTrace();

return null;

}

return Time;

}

/**

* 得到半年前的日期

*

* @return String

*/

public static String getHalfYearBeforeStr(){

java.util.GregorianCalendar cal = new java.util.GregorianCalendar();

/** @todo 取当前日期 */

String month = "";

int tMonth = cal.get(GregorianCalendar.MONTH) + 1;

if(tMonth < 10){

month = "0" + tMonth;

}else{

month = "" + tMonth;

}

int tDay = cal.get(GregorianCalendar.DATE);

String day = "";

if(tDay < 10){

day = "0" + tDay;

}else{

day = "" + tDay;

}

// String endDate = "" + cal.get(GregorianCalendar.YEAR) + month + day;

/** @todo 取半年前日期 */

cal.add(GregorianCalendar.MONTH, -6);

tMonth = cal.get(GregorianCalendar.MONTH) + 1;

if(tMonth < 10){

month = "0" + tMonth;

}else{

month = "" + tMonth;

}

tDay = cal.get(GregorianCalendar.DATE);

day = "";

if(tDay < 10){

day = "0" + tDay;

}else{

day = "" + tDay;

}

String beginDate = "" + cal.get(GregorianCalendar.YEAR) + month + day;

return beginDate;

}

/**

* 返回比当前日期晚几分钟的一个yyyy-MM-dd HH:mm:ss的日期串晚的分钟数可由输入参数minute控制

*

* @param minute

* @return 返回延迟N分钟后的时间串

*/

public static String getCurrentNextMinute(int minute){

String chargeStartTime = "";

try{

Calendar cal = Calendar.getInstance();

cal.setTime(new java.util.Date());

cal.add(Calendar.MINUTE, minute);

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

chargeStartTime = sdf.format(cal.getTime());

}catch(Exception e){

e.printStackTrace();

}

return chargeStartTime;

}

/**

* 得到当前分钟

*

* @return int

*/

public static int getCurMin(){

java.util.Date date = new java.util.Date();

java.text.SimpleDateFormat simpleDateFormat = new java.text.SimpleDateFormat("mm");

int currentTime = Integer.parseInt(simpleDateFormat.format(date));

return currentTime;

}

/**

* @param formatStr

* @return

*/

private static DateFormat getDateFormat(String formatStr){

if(formatStr.equalsIgnoreCase(DATE_FORMAT)){

return dateFormat;

}else if(formatStr.equalsIgnoreCase(TIMEF_FORMAT)){

return dateTimeFormat;

}else if(formatStr.equalsIgnoreCase(ZHCN_DATE_FORMAT)){

return zhcnDateFormat;

}else if(formatStr.equalsIgnoreCase(ZHCN_TIME_FORMAT)){

return zhcnDateTimeFormat;

}else{

return new SimpleDateFormat(formatStr);

}

}

/**

* 按照默认formatStr的格式,转化dateTimeStr为Date类型 dateTimeStr必须是formatStr的形式

*

* @param dateTimeStr

* @param formatStr

* @return

*/

public static Date getDate(String dateTimeStr,String formatStr){

try{

if(dateTimeStr == null || dateTimeStr.equals("")){ return null; }

DateFormat sdf = getDateFormat(formatStr);

java.util.Date d = sdf.parse(dateTimeStr);

return d;

}catch(ParseException e){

// throw new LangException(e);

}

return null;

}

/**

* 将Date转换成字符串“yyyy-mm-dd hh:mm:ss”的字符串

*

* @param date 日期

* @return String 字符串 TODO

*/

public static String dateToDateString(Date date){

return dateToDateString(date, TIMEF_FORMAT);

}

/**

* 将Date转换成formatStr格式的字符串

*

* @param date

* @param formatStr

* @return

*/

public static String dateToDateString(Date date,String formatStr){

DateFormat df = getDateFormat(formatStr);

return df.format(date);

}

/**

* 返回一个yyyy-MM-dd HH:mm:ss 形式的日期时间字符串中的HH:mm:ss

*

* @param dateTime

* @return

*/

public static String getTimeString(String dateTime){

return getTimeString(dateTime, TIMEF_FORMAT);

}

/**

* 返回一个formatStr格式的日期时间字符串中的HH:mm:ss

*

* @param dateTime

* @param formatStr

* @return

*/

public static String getTimeString(String dateTime,String formatStr){

Date d = getDate(dateTime, formatStr);

String s = dateToDateString(d);

return s.substring(TIMEF_FORMAT.indexOf('H'));

}

/**

* 获取当前日期yyyy-MM-dd的形式

*

* @return

*/

public static String getCurDate(){

return dateToDateString(new Date(), DATE_FORMAT);

}

/**

* 获取当前日期yyyy年MM月dd日的形式

*

* @return

*/

public static String getCurZhCNDate(){

return dateToDateString(new Date(), ZHCN_DATE_FORMAT);

}

/**

* 获取当前日期时间yyyy-MM-dd HH:mm:ss的形式

*

* @return

*/

public static String getCurDateTime(){

return dateToDateString(new Date(), TIMEF_FORMAT);

}

/**

* 获取当前日期时间yyyy年MM月dd日HH时mm分ss秒的形式

*

* @return

*/

public static String getCurZhCNDateTime(){

return dateToDateString(new Date(), ZHCN_TIME_FORMAT);

}

/**

* 获取日期d的days天后的一个Date

*

* @param d

* @param days

* @return Date

*/

public static Date getInternalDateByDay(Date d,int days){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

now.add(Calendar.DATE, days);

return now.getTime();

}

/**

* 获取日期d的months月后的一个Date

*

* @param d

* @param months

* @return Date

*/

public static Date getInternalDateByMon(Date d,int months){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

now.add(Calendar.MONTH, months);

return now.getTime();

}

/**

* 获取日期d的years年后的一个Date

*

* @param d

* @param years

* @return Date

*/

public static Date getInternalDateByYear(Date d,int years){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

now.add(Calendar.YEAR, years);

return now.getTime();

}

/**

* 获取日期d的sec秒后的一个Date

*

* @param d

* @param sec

* @return Date

*/

public static Date getInternalDateBySec(Date d,int sec){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

now.add(Calendar.SECOND, sec);

return now.getTime();

}

/**

* 获取日期d的min分后的一个Date

*

* @param d

* @param min

* @return Date

*/

public static Date getInternalDateByMin(Date d,int min){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

now.add(Calendar.MINUTE, min);

return now.getTime();

}

/**

* 获取日期d的hours小时后的一个Date

*

* @param d

* @param hours

* @return Date

*/

public static Date getInternalDateByHour(Date d,int hours){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

now.add(Calendar.HOUR_OF_DAY, hours);

return now.getTime();

}

/**

* 根据一个日期字符串,返回日期格式,目前支持4种 如果都不是,则返回null

*

* @param DateString

* @return 返回日期格式,目前支持4种

*/

public static String getFormateStr(String DateString){

String patternStr1 = "[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}"; // "yyyy-MM-dd"

String patternStr2 = "[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}\\s[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}"; // "yyyy-MM-dd HH:mm:ss";

String patternStr3 = "[0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日"; // "yyyy年MM月dd日"

String patternStr4 = "[0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日[0-9]{1,2}时[0-9]{1,2}分[0-9]{1,2}秒"; // "yyyy年MM月dd日HH时mm分ss秒"

Pattern p = Pattern.compile(patternStr1);

Matcher m = p.matcher(DateString);

boolean b = m.matches();

if(b){ return DATE_FORMAT; }

p = Pattern.compile(patternStr2);

m = p.matcher(DateString);

b = m.matches();

if(b){ return TIMEF_FORMAT; }

p = Pattern.compile(patternStr3);

m = p.matcher(DateString);

b = m.matches();

if(b){ return ZHCN_DATE_FORMAT; }

p = Pattern.compile(patternStr4);

m = p.matcher(DateString);

b = m.matches();

if(b){ return ZHCN_TIME_FORMAT; }

return null;

}

/**

* 将一个"yyyy-MM-dd HH:mm:ss"字符串,转换成"yyyy年MM月dd日HH时mm分ss秒"的字符串

*

* @param dateStr

* @return

*/

public static String getZhCNDateTime(String dateStr){

Date d = getDate(dateStr);

return dateToDateString(d, ZHCN_TIME_FORMAT);

}

/**

* 将一个"yyyy-MM-dd"字符串,转换成"yyyy年MM月dd日"的字符串

*

* @param dateStr

* @return

*/

public static String getZhCNDate(String dateStr){

Date d = getDate(dateStr, DATE_FORMAT);

return dateToDateString(d, ZHCN_DATE_FORMAT);

}

/**

* 将dateStr从fmtFrom转换到fmtTo的格式

*

* @param dateStr

* @param fmtFrom

* @param fmtTo

* @return

*/

public static String getDateStr(String dateStr,String fmtFrom,String fmtTo){

Date d = getDate(dateStr, fmtFrom);

return dateToDateString(d, fmtTo);

}

/**

* 将小时数换算成返回以毫秒为单位的时间

*

* @param hours

* @return

*/

public static long getMicroSec(BigDecimal hours){

BigDecimal bd;

bd = hours.multiply(new BigDecimal(3600 * 1000));

return bd.longValue();

}

/**

* 获取Date中的分钟

*

* @param d

* @return

*/

public static int getMin(Date d){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

return now.get(Calendar.MINUTE);

}

/**

* 获取xxxx-xx-xx的日

*

* @param d

* @return

*/

public static int getDay(Date d){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

return now.get(Calendar.DAY_OF_MONTH);

}

/**

* 获取月份,1-12月

*

* @param d

* @return

*/

public static int getMonth(Date d){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

return now.get(Calendar.MONTH) + 1;

}

/**

* 获取19xx,20xx形式的年

*

* @param d

* @return

*/

public static int getYear(Date d){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

return now.get(Calendar.YEAR);

}

/**

* 得到d的上个月的年份+月份,如200505

*

* @return

*/

public static String getYearMonthOfLastMon(Date d){

Date newdate = getInternalDateByMon(d, -1);

String year = String.valueOf(getYear(newdate));

String month = String.valueOf(getMonth(newdate));

return year + month;

}

/**

* 得到当前日期的年和月如200509

*

* @return String

*/

public static String getCurYearMonth(){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

String DATE_FORMAT = "yyyyMM";

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT);

sdf.setTimeZone(TimeZone.getDefault());

return (sdf.format(now.getTime()));

}

/**

* @param year

* @param month

* @return

*/

public static Date getNextMonth(String year,String month){

String datestr = year + "-" + month + "-01";

Date date = getDate(datestr, DATE_FORMAT);

return getInternalDateByMon(date, 1);

}

/**

* @param year

* @param month

* @return

*/

public static Date getLastMonth(String year,String month){

String datestr = year + "-" + month + "-01";

Date date = getDate(datestr, DATE_FORMAT);

return getInternalDateByMon(date, -1);

}

/**

* 得到日期d,按照页面日期控件格式,如"2001-3-16"

*

* @param d

* @return

*/

public static String getSingleNumDate(Date d){

return dateToDateString(d, DATE_FORMAT);

}

/**

* 得到d半年前的日期,"yyyy-MM-dd"

*

* @param d

* @return

*/

public static String getHalfYearBeforeStr(Date d){

return dateToDateString(getInternalDateByMon(d, -6), DATE_FORMAT);

}

/**

* 得到当前日期D的月底的前/后若干天的时间,<0表示之前,>0表示之后

*

* @param d

* @param days

* @return

*/

public static String getInternalDateByLastDay(Date d,int days){

return dateToDateString(getInternalDateByDay(d, days), DATE_FORMAT);

}

public static java.sql.Date getSqlDate(String dateTimeStr){

// DateUtils.getTIME_STR_FORMAT

java.sql.Date d = new java.sql.Date(DateUtils.getDate(dateTimeStr, DateUtils.TIME_STR_FORMAT).getTime());

// d.setHours(Integer.parseInt(dateTimeStr.substring(8,10)));

// d.setMinutes(Integer.parseInt(dateTimeStr.substring(10,12)));

// d.setSeconds(Integer.parseInt(dateTimeStr.substring(12,14)));

return d;

}

/**

* 获取上一个月

*

* @param ym 2013-09

* @param month

* @param pattern

* @return

*/

public static String getLastMonth(String ym,int month,String pattern){

Date date = getDate(ym, YEAR_S_MONTH);

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(date);

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(pattern);

sdf.setTimeZone(TimeZone.getDefault());

now.add(Calendar.MONTH, month);

return sdf.format(now.getTime());

}

/**

* 返回当月最后一天的日期

*/

public static String getLastDayOfMonth(Date date){

Calendar calendar = convert(date);

calendar.set(Calendar.DATE, calendar.getMaximum(Calendar.DATE));

DateFormat format = new SimpleDateFormat(DATE_FORMAT);

return format.format(calendar.getTime());

}

/**

* 将日期转换为日历

*

* @param date 日期

* @return 日历

*/

private static Calendar convert(Date date){

Calendar calendar = Calendar.getInstance();

calendar.setTime(date);

return calendar;

}

/**

* date2 - date1 = 多少天

*

* @param date1

* @param date2

* @return

*/

public static long getDiffersDays(String date1,String date2){

try{

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");

Date d1 = sdf.parse(date1);

Date d2 = sdf.parse(date2);

long daysBetween = (d2.getTime() - d1.getTime() + 1000000) / (3600 * 24 * 1000);

return daysBetween;

}catch(Exception ex){

ex.printStackTrace();

}

return 0;

}

/**

* 计算两个日期之间相差的天数 (date2 - date1)

*

* @param date1

* @param date2

* @return

*/

public static int daysBetween(Date date1,Date date2){

Calendar cal = Calendar.getInstance();

cal.setTime(date1);

long time1 = cal.getTimeInMillis();

cal.setTime(date2);

long time2 = cal.getTimeInMillis();

long between_days = (time2 - time1) / (1000 * 3600 * 24);

return Integer.parseInt(String.valueOf(between_days));

}

/**

* 计算两个日期相差天数

*

* @param smdate

* @param bdate

* @return

* @throws ParseException

*/

public static int daysBetween(String smdate,String bdate){

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

try{

Calendar cal = Calendar.getInstance();

cal.setTime(sdf.parse(smdate));

long time1 = cal.getTimeInMillis();

cal.setTime(sdf.parse(bdate));

long time2 = cal.getTimeInMillis();

long between_days = (time2 - time1) / (1000 * 3600 * 24);

return Integer.parseInt(String.valueOf(between_days));

}catch(ParseException ex){

ex.printStackTrace();

}

return 0;

}

/**

* 计算两个时间相差的月份

* @param start

* @param end

* @return

*/

public static int monthBetween(String start,String end){

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");

try{

Calendar cal = Calendar.getInstance();

cal.setTime(sdf.parse(start));

long time1 = cal.getTimeInMillis();

cal.setTime(sdf.parse(end));

long time2 = cal.getTimeInMillis();

long between_days = (time2 - time1) / (1000 * 3600 * 24);

return Integer.parseInt(String.valueOf(between_days));

}catch(ParseException ex){

ex.printStackTrace();

}

return 0;

}

/**

* 根据给定日期Date返回星期几

*

* @param date

* @return

*/

public static String getWeekOfDate(Date date){

String[] weekOfDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};

Calendar calendar = Calendar.getInstance();

if(date != null){

calendar.setTime(date);

}

int w = calendar.get(Calendar.DAY_OF_WEEK) - 1;

if(w < 0){

w = 0;

}

return weekOfDays[w];

}

/**

* 根据给定日期(字符串形式)返回星期几

*

* @param date

* @return

*/

public static String getWeekOfDate(String date){

Date d = getDate(date, "yy-MM-dd");

return getWeekOfDate(d);

}

/**

* 返回指定日期的下一个日期

*

* @param d

* @return

*/

public static Date getNextDate(Date d){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

now.add(Calendar.DAY_OF_MONTH, 1);

return now.getTime();

}

/**

* 返回指定日期的下一个日期

*

* @param d

* @param dateFomat

* @return

*/

public static String getNextDate(String d,String dateFomat){

Date date = getNextDate(getDate(d, dateFomat));

DateFormat df = new SimpleDateFormat(dateFomat);

return df.format(date);

}

/**

* 获取Date中的小时

*

* @param d

* @return

*/

public static int getHour(Date d){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

return now.get(Calendar.HOUR_OF_DAY);

}

/**

* 给定时间,返回小时

*

* @param d

* @return

*/

public static int getHour(String d){

return getHour(getDate(d, "hh:mm:ss"));

}

public static int getMin(String d){

return getMin(getDate(d, "hh:mm:ss"));

}

/**

* 按指定格式返回日期字符串

*

* @Title: formatDate

* @param pattern

* @return

* @return: String

*/

public static String formatDate(String pattern){

return formatDate(new Date(), pattern);

}

/**

* @Title: formatDate

* @param date

* @param pattern

* @return

* @return: String

*/

public static String formatDate(Date date,String pattern){

SimpleDateFormat sdf = new SimpleDateFormat(pattern);

return sdf.format(date);

}

/**

* 格式化输出日期

*

* @param date 日期

* @param format 格式

* @return 返回字符型日期

*/

public static String format(java.util.Date date,String format){

String result = "";

try{

if(date != null){

java.text.DateFormat df = new java.text.SimpleDateFormat(format);

result = df.format(date);

}

}catch(Exception e){}

return result;

}

/**

* @Title: getDateByStr

* @param date

* @return

* @return: Date

*/

public static Date getDateByStr(String date){

return getDateByStr(date, TIMEF_FORMAT);

}

/**

* @Title: getDateByStr

* @param date

* @param pattern

* @return

* @return: Date

*/

public static Date getDateByStr(String date,String pattern){

SimpleDateFormat sdf = new SimpleDateFormat(pattern);

try{

return sdf.parse(date);

}catch(ParseException e){

e.printStackTrace();

}

return new Date();

}

/**

* 补齐不足长度

*

* @param length 长度

* @param number 数字

* @return

*/

public static String lpad(int length,Long number){

String f = "%0" + length + "d";

// 超过的话 就截取

String nuber_str = number + "";

if(nuber_str.length() > length){ return nuber_str = nuber_str.substring(nuber_str.length() - length); }

return String.format(f, number);

}

/**

* 计算两个日期相差 毫秒数

*

* @param smdate

* @param bdate

* @return

* @throws ParseException

*/

public static int millBetween(String smdate,String bdate){

SimpleDateFormat sdf = new SimpleDateFormat(MSEL_FORMAT);

try{

Calendar cal = Calendar.getInstance();

cal.setTime(sdf.parse(smdate));

long time1 = cal.getTimeInMillis();

cal.setTime(sdf.parse(bdate));

long time2 = cal.getTimeInMillis();

long between_days = (time2 - time1);

return Integer.parseInt(String.valueOf(between_days));

}catch(ParseException ex){

ex.printStackTrace();

}

return 0;

}

/**

* 签到日考勤统计 获取当前时间的时分秒

*

* @author:黄泽亮

* @return

*/

public static String getEveryMinute(){

Calendar now = Calendar.getInstance(TimeZone.getDefault());

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");// 时:分:秒

sdf.setTimeZone(TimeZone.getDefault());

return (sdf.format(now.getTime()));

}

/**

* 获取小数点后一位

* @author: 黄泽亮

* @param minutes

* @return

*/

public static String getPointOne(long minutes){

double s = minutes / 60d;

double newTime = (double)(Math.floor(s * 10d) / 10);

return newTime + "";

}

/**

* 获取当月工作日天数

* @author: 黄泽亮

* @return

*/

public static int getWorkingDay(){

String input =dateToDateString(new Date(),"yyyy-MM");

int count = 0;

int month = Integer.parseInt(input.substring(5, 7));

Calendar cal = Calendar.getInstance();

cal.set(Calendar.YEAR, Integer.parseInt(input.substring(0, 4)));

cal.set(Calendar.MONTH, month - 1);

cal.set(Calendar.DATE, 1);

while(cal.get(Calendar.MONTH) < month){

int day = cal.get(Calendar.DAY_OF_WEEK);

if(!(day == Calendar.SUNDAY || day == Calendar.SATURDAY)){

count++;

}

cal.add(Calendar.DATE, 1);

}

return count;

}

/**

* 获取某个月的法定工作日

* @author: 黄泽亮

* @param dateStr

* @return

*/

public static int getMonthWorkingDay(String dateStr){

int count = 0;

int month = Integer.parseInt(dateStr.substring(5, 7));

Calendar cal = Calendar.getInstance();

cal.set(Calendar.YEAR, Integer.parseInt(dateStr.substring(0, 4)));

cal.set(Calendar.MONTH, month - 1);

cal.set(Calendar.DATE, 1);

while(cal.get(Calendar.MONTH) < month){

int day = cal.get(Calendar.DAY_OF_WEEK);

if(!(day == Calendar.SUNDAY || day == Calendar.SATURDAY)){

count++;

}

cal.add(Calendar.DATE, 1);

if(month==12 && cal.get(Calendar.MONTH) == 0) break;

}

return count;

}

/**

* 获取当月第一天  返回格式例  2016-06-01

* @author: 黄泽亮

* @param date

* @return

*/

public static String getFirstDayOfMonth(Date date){

Calendar calendar = convert(date);

calendar.set(Calendar.DATE, calendar.getMinimum(Calendar.DATE));

DateFormat format = new SimpleDateFormat(DATE_FORMAT);

return format.format(calendar.getTime());

}

/**

* 返回当月最后一天的日期 eg: 2016-06-30

* @author: 黄泽亮

* @param date

* @return

*/

public static String getActualLastDayOfMonth(Date date){

Calendar calendar = convert(date);

calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));

DateFormat format = new SimpleDateFormat(DATE_FORMAT);

return format.format(calendar.getTime());

}

public static String getFirstDayOfWeek(Date date){

Calendar calendar = convert(date);

calendar.setFirstDayOfWeek(Calendar.SUNDAY);

calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek());

DateFormat format = new SimpleDateFormat(DATE_FORMAT);

return format.format(calendar.getTime());

}

public static String getLastDayOfWeek(Date date){

Calendar calendar = convert(date);

calendar.setFirstDayOfWeek(Calendar.SUNDAY);

calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek()+6);

DateFormat format = new SimpleDateFormat(DATE_FORMAT);

return format.format(calendar.getTime());

}

/**

* 获取当天是 年+第几周

* @author: 黄泽亮

* @return

*/

public static String getWeekOfYear(){

Calendar c = Calendar.getInstance();

String y = c.get(Calendar.YEAR)+"";

String wk = c.get(Calendar.WEEK_OF_YEAR)+"";

return y + wk;//年+第几周

}

/**

* 得到某一天的该星期的第一日

* @author: 黄泽亮

* @param date

* @param firstDayOfWeek

* @return

*/

public static Date getFirstDayOfWeek(Date date, int firstDayOfWeek) {

Calendar cal = Calendar.getInstance();

if (date != null)

cal.setTime(date);

cal.setFirstDayOfWeek(firstDayOfWeek);//设置一星期的第一天是哪一天

cal.set(Calendar.DAY_OF_WEEK, firstDayOfWeek);//指示一个星期中的某天

cal.set(Calendar.HOUR_OF_DAY, 0);//指示一天中的小时。HOUR_OF_DAY 用于 24 小时制时钟。例如,在 10:04:15.250 PM 这一时刻,HOUR_OF_DAY 为 22。

cal.set(Calendar.MINUTE, 0);//指示一小时中的分钟。例如,在 10:04:15.250 PM 这一时刻,MINUTE 为 4。

cal.set(Calendar.SECOND, 0);

cal.set(Calendar.MILLISECOND, 0);

return cal.getTime();

}

/**

* 获取上周一时间

*/

public static Date lastMonday() {

Calendar calendar = Calendar.getInstance();

while (calendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {

calendar.add(Calendar.DAY_OF_WEEK, -1);

}

int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;

int offset = 1 - dayOfWeek;

calendar.add(Calendar.DATE, offset - 7);

return getFirstDayOfWeek(calendar.getTime(), 2);

}

/**

* 上周是一年中的第几周

* @author: 黄泽亮

* @return

* @throws ParseException

*/

public static String getLastWeekOfYear() throws ParseException{

Calendar cal = Calendar.getInstance();

SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");

cal.setTime(format.parse(format.format(lastMonday())));

String y = cal.get(Calendar.YEAR) + "";

String  week = cal.get(Calendar.WEEK_OF_YEAR) + "";

return y + week;

}

/**

* 获取下个月第一天

* @return

*/

public static Date nextMonthFirstDay(){

Calendar c = Calendar.getInstance();

c.set(Calendar.MONTH, c.get(Calendar.MONTH)+1);

c.set(Calendar.DAY_OF_MONTH, 1);

c.set(Calendar.HOUR_OF_DAY, 0);

c.set(Calendar.MINUTE, 0);

c.set(Calendar.SECOND, 0);

return c.getTime();

}

/**

* 获取每个月工作日列表

* @param year

* @param month

* @return

*/

public static List getWorking(int year,int month){

List dates = new ArrayList();

Calendar cal = Calendar.getInstance();

cal.set(Calendar.YEAR, year);

cal.set(Calendar.MONTH,  month - 1);

cal.set(Calendar.DATE, 1);

while(cal.get(Calendar.YEAR) == year &&

cal.get(Calendar.MONTH) < month){

int day = cal.get(Calendar.DAY_OF_WEEK);

if(!(day == Calendar.SUNDAY || day == Calendar.SATURDAY)){

dates.add(dateToDateString((Date)cal.getTime().clone(),DATE_FORMAT));

}

cal.add(Calendar.DATE, 1);

}

return dates;

}

/**

* 获取年份

* @author: 黄泽亮   输入参数格式:  2016-07

* @param dateStr

* @return

*/

public static int getYear(String dateStr){

int year = Integer.parseInt(dateStr.substring(0, 4));

return year;

}

/**

* 获取月份

* @author: 黄泽亮  输入参数格式:  2016-07

* @param dateStr

* @return

*/

public static int getMonth(String dateStr){

int month = Integer.parseInt(dateStr.substring(5, 7));

return month;

}

/**

* 获取下个月的第一天的零时零分零秒

* @param month 向后推迟月的个数

* @return

*/

public static Date getFirstDayOfNextMonth(int month){

Calendar c = Calendar.getInstance();

c.set(Calendar.MONTH, c.get(Calendar.MONTH)+month);

c.set(Calendar.DAY_OF_MONTH,1);

c.set(Calendar.HOUR_OF_DAY,0);

c.set(Calendar.MINUTE,0);

c.set(Calendar.SECOND, 0);

c.set(Calendar.MILLISECOND,0);

return c.getTime();

}

/**

* 获得当月凌晨0点0分0秒

* @return

*/

public static Date getMonthZero(){

Calendar startTime = Calendar.getInstance();

startTime.set(Calendar.DAY_OF_MONTH, 1);

startTime.set(Calendar.HOUR_OF_DAY, 0);

startTime.set(Calendar.MINUTE, 0);

startTime.set(Calendar.SECOND, 0);

startTime.set(Calendar.MILLISECOND,0);

Date start = startTime.getTime();

return start;

}

/**

* 获得当月凌晨5点0分0秒

* @return

*/

public static Date getMonthFive(){

Calendar startTime = Calendar.getInstance();

startTime.set(Calendar.DAY_OF_MONTH, 1);

startTime.set(Calendar.HOUR_OF_DAY, 5);

startTime.set(Calendar.MINUTE, 0);

startTime.set(Calendar.SECOND, 0);

startTime.set(Calendar.MILLISECOND,0);

Date start = startTime.getTime();

return start;

}

/**

* 获得当前月末最后倒数第三天

* @return

*/

public static Date getLastThree(){

Calendar cale = Calendar.getInstance();

cale.add(Calendar.MONTH, 1); //设置为下个月1号

cale.set(Calendar.DAY_OF_MONTH,-2);//设置为倒数第三天

cale.set(Calendar.HOUR_OF_DAY, 0);

cale.set(Calendar.MINUTE, 0);

cale.set(Calendar.SECOND, 0);

cale.set(Calendar.MILLISECOND,0);

Date start = cale.getTime();

return start;

}

/**

*

* @return

*/

public static Date getMonthLast(){

Calendar cale = Calendar.getInstance();

cale.add(Calendar.MONTH, 1);

cale.set(Calendar.DAY_OF_MONTH,0);//设置为1号,当前日期既为本月第一天

cale.set(Calendar.HOUR_OF_DAY, 0);

cale.set(Calendar.MINUTE, 0);

cale.set(Calendar.SECOND, 0);

cale.set(Calendar.MILLISECOND,0);

Date start =cale.getTime();

return start;

}

/**

* //获取当前月最后一天的最后一秒

* @return

*/

public static Date getMonthLastDay(){

Calendar   calEnd=Calendar.getInstance();//获取当前日期

calEnd.add(Calendar.MONTH, 1);

calEnd.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天

calEnd.set(Calendar.HOUR_OF_DAY, 0);

calEnd.set(Calendar.MINUTE, 0);

calEnd.set(Calendar.SECOND, -1);

Date endTime =calEnd.getTime();

return endTime;

}

/**

* 获得上月27号0时00分0秒

* @return

*/

public static Date getLastMonth27(){

Calendar caleStart = Calendar.getInstance();

caleStart.add(Calendar.MONTH, -1);

caleStart.set(Calendar.DAY_OF_MONTH, 27);// 设置为27号,当前日期既为上月的27号

caleStart.set(Calendar.HOUR_OF_DAY, 0);

caleStart.set(Calendar.MINUTE, 0);

caleStart.set(Calendar.SECOND, 0);

return caleStart.getTime();

}

/**

* 获得本月27号0时00分0秒

* @return

*/

public static Date getMonth27(){

Calendar calEnd = Calendar.getInstance();// 获取当前日期

calEnd.set(Calendar.DAY_OF_MONTH, 27);// 设置为27号,当前日期既为本月27号

calEnd.set(Calendar.HOUR_OF_DAY, 0);

calEnd.set(Calendar.MINUTE, 0);

calEnd.set(Calendar.SECOND, -1);

return calEnd.getTime();

}

public static Date getUnicomSettleMentDayOfMonth(int month){

Calendar c = Calendar.getInstance();

c.set(Calendar.MONTH, c.get(Calendar.MONTH)+month-1);

c.set(Calendar.DAY_OF_MONTH,27);

c.set(Calendar.HOUR_OF_DAY,0);

c.set(Calendar.MINUTE,0);

c.set(Calendar.SECOND, 0);

c.set(Calendar.MILLISECOND,0);

return c.getTime();

}

public static Date getDateForInvalid(){

Calendar c = Calendar.getInstance();

int day =c.get(Calendar.DAY_OF_MONTH);

if(day>=27){

c.add(Calendar.MONTH, 1);

}else{

c.add(Calendar.MONTH, 0);

}

c.set(Calendar.DAY_OF_MONTH,27);

c.set(Calendar.HOUR_OF_DAY,0);

c.set(Calendar.MINUTE,0);

c.set(Calendar.SECOND, 0);

c.set(Calendar.MILLISECOND,0);

return c.getTime();

}

public static Date getTodayStart(){

Calendar c = Calendar.getInstance();

c.set(Calendar.HOUR_OF_DAY,0);

c.set(Calendar.MINUTE,0);

c.set(Calendar.SECOND, 0);

c.set(Calendar.MILLISECOND,0);

return c.getTime();

}

public static Date getTodayEnd(){

Calendar c = Calendar.getInstance();

c.add(Calendar.DATE,1);

c.set(Calendar.HOUR_OF_DAY,0);

c.set(Calendar.MINUTE,0);

c.set(Calendar.SECOND, 0);

c.set(Calendar.MILLISECOND,0);

return c.getTime();

}

/* 获得当前时间的一天之前 */

public static Date getOneDayBefore(){

Calendar c = Calendar.getInstance();

c.add(Calendar.DATE,-1);

return c.getTime();

}

/*

* 获得月底最后一天最后一秒

*/

public static Date getMonthEnd(){

Calendar cal = Calendar.getInstance();

cal.add(Calendar.MONTH, 1);

cal.set(Calendar.DAY_OF_MONTH,1);

cal.set(Calendar.HOUR_OF_DAY,0);

cal.set(Calendar.MINUTE,0);

cal.set(Calendar.SECOND, 0);

cal.set(Calendar.MILLISECOND,-1);

return cal.getTime();

}

/**

* 日期加一天

* @param day

* @return

*/

public static String getNextDay(String day){

SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");

try {

Date date = sdf.parse(day);

Calendar cal =Calendar.getInstance();

cal.setTime(date);

cal.add(Calendar.DATE,1);

date = cal.getTime();

return sdf.format(date);

} catch (ParseException e) {

e.printStackTrace();

}

return "";

}

/**

* 日期加一个月

* @param day

* @return

*/

public static String getNextMonth(String day){

SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");

try {

Date date = sdf.parse(day);

Calendar cal =Calendar.getInstance();

cal.setTime(date);

cal.add(Calendar.MONTH, 1);

date = cal.getTime();

return sdf.format(date);

} catch (ParseException e) {

e.printStackTrace();

}

return "";

}

/**

* 比较两个时间点 是不是同一天

* @param d1

* @param d2

* @return

*/

public static boolean DateCompare(Date d1,Date d2){

Calendar c1 =Calendar.getInstance();

c1.setTime(d1);

c1.set(Calendar.HOUR_OF_DAY,0);

c1.set(Calendar.MINUTE,0);

c1.set(Calendar.SECOND, 0);

c1.set(Calendar.MILLISECOND,0);

Calendar c2 =Calendar.getInstance();

c2.setTime(d2);

c2.set(Calendar.HOUR_OF_DAY,0);

c2.set(Calendar.MINUTE,0);

c2.set(Calendar.SECOND, 0);

c2.set(Calendar.MILLISECOND,0);

int result = c1.compareTo(c2);

if(result==0){

return true;

}else{

return false;

}

}

/**

* 根据月份获取月初时间

* @param date

* @return

*/

public static String getStartTime(String time){

SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");

try {

Date date = sdf.parse(time);

Calendar cal =Calendar.getInstance();

cal.setTime(date);

cal.set(Calendar.DAY_OF_MONTH,1);

date = cal.getTime();

return sdf.format(date);

} catch (ParseException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return "";

}

/**

* 根据月份获取月底时间

* @param date

* @return

*/

public static String getEndTime(String time){

SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");

try {

Date date = sdf.parse(time);

Calendar cal =Calendar.getInstance();

cal.setTime(date);

cal.add(Calendar.MONTH, 1);

cal.set(Calendar.DAY_OF_MONTH,0);

date = cal.getTime();

return sdf.format(date);

} catch (ParseException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return "";

}

/**

* 获得当天时间的零晨

* @return

*/

public static Date getNowDayStart(){

Calendar cal = Calendar.getInstance();

cal.set(Calendar.HOUR_OF_DAY,0);

cal.set(Calendar.MINUTE,0);

cal.set(Calendar.SECOND, 0);

cal.set(Calendar.MILLISECOND,0);

return cal.getTime();

}

/**

* 获得当天时间的最后一秒

* @return

*/

public static Date getNowDayEnd(){

Calendar cal = Calendar.getInstance();

cal.add(Calendar.DATE,1);

cal.set(Calendar.HOUR_OF_DAY,0);

cal.set(Calendar.MINUTE,0);

cal.set(Calendar.SECOND, 0);

cal.set(Calendar.MILLISECOND,-1);

return cal.getTime();

}

/**

* 获得当月1号时间

* @param args

*/

public static Date getMonthStart(){

Calendar cal =Calendar.getInstance();

cal.set(Calendar.DAY_OF_MONTH,1);

cal.set(Calendar.HOUR_OF_DAY,0);

cal.set(Calendar.MINUTE,0);

cal.set(Calendar.SECOND, 0);

cal.set(Calendar.MILLISECOND,0);

return cal.getTime();

}

public static boolean monthCompare(Date date1,Date date2){

Calendar calendar = Calendar.getInstance(TimeZone.getDefault());

calendar.setTime(date1);

int m1 = calendar.get(Calendar.MONTH);

int y1 = calendar.get(Calendar.YEAR);

calendar.setTime(date2);

int y2 = calendar.get(Calendar.YEAR);

int m2 = calendar.get(Calendar.MONTH);

if(y1>y2)

return true;

else if(y1==y2 && m1>m2)

return true;

else

return false;

}

/**

* 取得当前时间戳(精确到秒)

*

* @return nowTimeStamp

*/

public static String getNowTimeStamp() {

long time = System.currentTimeMillis();

String nowTimeStamp = String.valueOf(time / 1000);

return nowTimeStamp;

}

public static String Date2TimeStamp(String dateStr, String format) {

try {

SimpleDateFormat sdf = new SimpleDateFormat(format);

return String.valueOf(sdf.parse(dateStr).getTime() / 1000);

} catch (Exception e) {

e.printStackTrace();

}

return "";

}

public static Date addMonths(final Date date, final int amount) {

return add(date, Calendar.MONTH, amount);

}

private static Date add(final Date date, final int calendarField, final int amount) {

if (date == null) {

throw new IllegalArgumentException("The date must not be null");

}

final Calendar c = Calendar.getInstance();

c.setTime(date);

c.add(calendarField, amount);

return c.getTime();

}

public static String getTimeStrFormat(Date date) {

return timeStrFormat.format(date);

}

public static void main(String[] args){

//System.out.println(getInternalTimeByMonth(6,DateUtils.TIMEF_FORMAT));

//System.out.println(getInternalTimeByYm(7,5,DateUtils.TIMEF_FORMAT));

String date = "2017-07-17 11:03:52";

System.out.println("compareToBefore1 : "+date.compareTo("2017-09-16 11:03:52"));

System.out.println("compareToBefore2 : "+date.compareTo("2017-05-16 11:03:52"));

System.out.println("compareToNow1 : "+date.compareTo("2017-07-17 11:03:52"));

System.out.println("compareToNow2 : "+date.compareTo("2017-07-17"));

System.out.println("compareToAfter1 : "+date.compareTo("2017-07-18 11:03:52"));

System.out.println("compareToAfter2 : "+date.compareTo("2017-09-16 11:03:52"));

System.out.println(getToday(TIMEF_FORMAT));

String date1="2017-07-09 11:12:56";

System.out.println(getDiffersDays(date1,date));

System.out.println(getCurMin());

//返回当前时间的小时

System.out.println(getHour(new Date()));

if(getHour(new Date())>=8 && getHour(new Date())<18) {

System.out.println(true);

}else {

System.out.println(false);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值