欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Date工具类

程序员文章站 2022-05-25 08:04:38
...

package com.ehean.common.utils;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

public class DateUtils {

/**
* @description 计算时长
* @param beginTime 开始时间
* @param endTime 结束时间
* @return String 返回类型
* @author hxt
* @date 2016年12月20日 上午9:10:35
/
public static String getTimeStr(Date beginTime,Date endTime) {
/
*
* 秒
*/
double timeSecend = Math.ceil(Double.parseDouble(String.valueOf((beginTime.getTime() - endTime.getTime())/1000)));
String timeStr = “”;
if(timeSecend < 60){
timeStr = ((int)Math.ceil(timeSecend)) + “秒前”;

  }else if(timeSecend < 60*60 ){
     timeStr = ((int)Math.ceil(timeSecend/60)) + "分钟前";

  }else if(timeSecend < 60 * 60 * 24 ){
     timeStr = ((int)Math.ceil(timeSecend/60/60)) + "小时前";

  }else if(timeSecend  < 60 * 60 * 24 * 7 ){
     timeStr = ((int)Math.ceil(timeSecend/60/60/24)) + "天前";

  }else if(timeSecend < 60 * 60 * 24 * 7 * 4){
     timeStr = ((int)Math.ceil(timeSecend/60/60/24/7)) + "周前";

  }else if(timeSecend < 60 * 60 * 24 * 365){
     timeStr = ((int)Math.ceil(timeSecend/60/60/24/30)) + "月前";

  }else {
     timeStr = ((int)Math.ceil(timeSecend/60/60/24/365)) + "年前";
  }
  return timeStr;

}

/**
* 将字符串转成格式的日期
* @date 2015-11-23
* @param strDate 需要转换的字符串
* @param format 转换格式,如:yyyy-MM-dd HH:mm:ss
* @return
*/
public static Date formatStrToDate(String strDate, String format) {
Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat(format);
try {
date = sdf.parse(strDate);
} catch (ParseException e) {

  }
  return date;

}

/**
* 将日期转成字符串
* @date 2015-11-23
* @param date 需要转换的日期
* @param format 转换格式,如:yyyy-MM-dd HH:mm:ss
* @return
*/
public static String formatDateToStr(Date date, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(date);
}

/**
* @description 获当前日期的的前一个月
* @return Date 返回类型
* @date 2016年1月11日 下午4:11:51
*/
public static Date getLastMonthDate() {
Calendar lastMonthDate = Calendar.getInstance();
lastMonthDate.add(Calendar.MONTH, -1);
return lastMonthDate.getTime();
}

/**
* @description 获取某一日期的前一天
* @param date
* @return Date 返回类型
* @date 2016年1月11日 下午4:14:25
*/
public static Date getBeforeDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, -1);
date = calendar.getTime();
return date;
}

/**
* @description 将某一日期增加若干月
* @param curr
* @param months 增加的月份数,若为负数,则表示往前几个月
* @return Date 返回类型
* @date 2016年1月11日 下午3:44:57
*/
public static Date addMonths(Date curr, int months) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(curr);
calendar.add(Calendar.MONTH, months);
return calendar.getTime();
}

/**
* @description 将某一日期增加若干天
* @param curr
* @param days
* @return Date 返回类型
* @date 2016年1月11日 下午3:43:03
*/
public static Date addDays(Date curr, int days) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(curr);
calendar.add(Calendar.DAY_OF_MONTH, days);
return calendar.getTime();
}

/**
* 将某一日期减少若干天
* @param curr
* @param days
* @return
*/
public static Date reduceDays(Date curr, int days) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(curr);
calendar.add(Calendar.DAY_OF_MONTH, days);
return calendar.getTime();
}

/**
* @description 将某一日期增加若干小时
* @param date
* @param hours
* @return Date 返回类型
* @date 2016年1月11日 下午3:55:13
*/
public static Date addHours(Date date, int hours) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR, hours);
return calendar.getTime();
}

/**
* @description 将某一日期增加若干分钟
* @param curr
* @param minutes
* @return Date 返回类型
* @date 2016年1月11日 下午3:43:21
*/
public static Date addMinutes(Date curr, int minutes) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(curr);
calendar.add(Calendar.MINUTE, minutes);
return calendar.getTime();
}

/**
* 获取当前时间加上传入的秒数
* @since 2015-11-05
* @return
/
public static Date getAddSeconds(int seconds) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.SECOND, +seconds);
Date delayTime = calendar.getTime();
return delayTime;
}
/
*
*
* @description 将某一日期增加若干周
* @param curr
* @param weeks
* @return
* @return Date 返回类型
* @throws
* @date 2017年8月21日 下午7:36:12
/
public static Date addWeeks(Date curr, int weeks) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(curr);
calendar.add(Calendar.WEDNESDAY, weeks);
return calendar.getTime();
}
/
*
*
* @description 将某一日期增加若干年
* @param curr
* @param years
* @return
* @return Date 返回类型
* @throws
* @date 2017年8月21日 下午7:36:12
*/
public static Date addYears(Date curr, int years) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(curr);
calendar.add(Calendar.YEAR, years);
return calendar.getTime();
}

/**
* 取两个Date之间的天数差

*

* 例:newerDate是6月3日,olderDate是5月31日,则应返回3

* 一个更极端的列子:newerDate是6月3日 00:01,olderDate是6月2日
* 23:59,则应返回1,说明相差一天,即便实际上只差2分钟

* 此代码来自网上

* http://blog.csdn.net/rmartin/article/details/1452867
*
* @param newerDate
* @param olderDate
* @return
*/
public static int daysBetween(Date newerDate, Date olderDate) {
Calendar cNow = Calendar.getInstance();
Calendar cReturnDate = Calendar.getInstance();
cNow.setTime(newerDate);
cReturnDate.setTime(olderDate);
setTimeToMidnight(cNow);
setTimeToMidnight(cReturnDate);
long todayMs = cNow.getTimeInMillis();
// zyb 2015/4/8 将日期中毫秒归零,以避免错误
todayMs = (todayMs / 1000L) * 1000L;
long returnMs = cReturnDate.getTimeInMillis();
// zyb 2015/4/8 将日期中毫秒归零,以避免错误
returnMs = (returnMs / 1000L) * 1000L;
long intervalMs = todayMs - returnMs;
return millisecondsToDays(intervalMs);
}

/**
* 算出两个日期之间相差的分钟数
*
* @param newerDate
* @param olderDate
* @return
*/
public static int MinutesBetween(Date newerDate, Date olderDate) {
Calendar cNow = Calendar.getInstance();
Calendar cReturnDate = Calendar.getInstance();
cNow.setTime(newerDate);
cReturnDate.setTime(olderDate);
long todayMs = cNow.getTimeInMillis();
long returnMs = cReturnDate.getTimeInMillis();
long intervalMs = todayMs - returnMs;
intervalMs = intervalMs / (1000 * 60);
return (int) intervalMs;
}

private static int millisecondsToDays(long intervalMs) {
return (int) (intervalMs / (1000 * 86400));
}

/**
* @description 设置时间为0点
/
public static Date setTimeToMidnight(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/
*
* @description 设置时间为0点
*/
public static Date setTimeToMidnight(Calendar calendar) {
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}

/**
* @description 设置某一日期的时间
* @param date
* @param hour
* @return Date 返回类型
* @date 2016年2月22日 下午3:58:48
*/
public static Date setHours(Date date, int hour) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
return calendar.getTime();
}

/**
* @description 返回当前时间的所在月的第一天的0:0:0
*/
public static Date getFirstMomentOfThisMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}

/**
* 返回 计算每个月的天数
* @param year XXXX年
* @param month XX月
* @return
/
public static int getDaysOfMonth2(int year, int month) {
int days = 0;
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 9
|| month == 10 || month == 12) {
days = 31;
} else if (month == 4 || month == 6 || month == 8 || month == 11) {
days = 30;
} else { // 2月份,闰年29天、平年28天
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
days = 29;
} else {
days = 28;
}
}
return days;
}
/
*
* 获取时间差,秒数
*/
public static long getSecond(Date beginTime,Date endTime)throws Exception{
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
String statrsTime= sdf.format(beginTime).toString();
String orveTime = sdf.format(endTime).toString();
// 将截取到的时间字符串转化为时间格式的字符串 **/
Date begin=sdf.parse(statrsTime);
Date end = sdf.parse(orveTime);
long Second=(end.getTime()-begin.getTime())/1000;//除以1000是为了转换成秒
return Second;
}

/**
* 比较时间大小
*/
public static Boolean compareToDate(Date registerDate,Date nextDayDate){
Calendar c1=Calendar.getInstance();
Calendar c2=Calendar.getInstance();
boolean isflag=false;
try {
c1.setTime(registerDate);
c2.setTime(nextDayDate);
} catch (Exception e) {
e.printStackTrace();
}
int result=c1.compareTo(c2);
if(result<0){
isflag=false;
}else{
isflag=true;
}
return isflag;
}

/**
* 将时间转成"yyyy-MM-dd"格式的字符串
* @param date 时间
* @return
*/
public static String formatToYYYYMMDD(Date date) {
if (date != null) {
return YZYDateFormat.getInstance(“yyyy-MM-dd”).format(date);
} else {
return “null”;
}

}

/**
* 将时间转成"yyyy-MM-dd"格式的字符串
*
* @param date
* zhenglp
* @return
*
*/
public static String intoYYYYMMDD(Date date) {
if (date != null) {
return YZYDateFormat.getInstance(“yyyyMMdd”).format(date);
} else {
return “null”;
}

}

public static String formatToYYYYMMDDMMHHSS(Date date) {
YZYDateFormat format = YZYDateFormat.getInstance(“yyyy-MM-dd HH:mm:ss”);
return format.format(date);
}

public static Date formatToDayByYYYYMMDDHHMMSS(String s)
throws ParseException {
YZYDateFormat format = YZYDateFormat.getInstance(“yyyy-MM-dd HH:mm:ss”);
return format.parse(s);
}

public static Date formatToDayByYYYYMMDDMMHH(String s) throws ParseException {
YZYDateFormat format = YZYDateFormat.getInstance(“yyyy-MM-dd HH:mm”);
return format.parse(s);
}

public static String formatToYYYYMMDDMMHHSSSlash(Date date) {
YZYDateFormat format = YZYDateFormat.getInstance(“yyyy/MM/dd HH:mm:ss”);
return format.format(date);
}

public static String formatToYYYYMMDDSlash(Date date) {
YZYDateFormat format = YZYDateFormat.getInstance(“yyyy/MM/dd”);
return format.format(date);
}

public static String formatToYYYYMM(Date date) {
YZYDateFormat format = YZYDateFormat.getInstance(“yyyyMM”);
return format.format(date);
}

public static String formatToYMZSlash(Date date) {
YZYDateFormat format = YZYDateFormat.getInstance(“yyyy年MM月dd日”);
return format.format(date);
}

public static Date formatToDayByYYYYMMDDMMHHSS(String s) throws ParseException {
YZYDateFormat format = YZYDateFormat.getInstance(“yyyyMMdd”);
return format.parse(s);
}
public static Date formatToDayByYYYYMM(String s) throws ParseException {
YZYDateFormat format = YZYDateFormat.getInstance(“yyyyMM”);
return format.parse(s);
}

public static String formatToYMZSlashDel(Date date) {
YZYDateFormat format = YZYDateFormat.getInstance(“yyyy.MM.dd”);
return format.format(date);
}
public static String formatToYYYYMMDDHHMMSS(Date date) {
YZYDateFormat format = YZYDateFormat.getInstance(“yyyyMMddHHmmss”);
return format.format(date);
}

/**
* 将传入的参数封装成枚举进行return
* @author 刘松
* @param errorCode
* @param errorMessage
* @param innMessage
* @return
*/

/**
* 获取当年的最后一天 返回的日期格式 yyyy-MM-dd
* @return
*/
public static String getYearLast(){
Calendar currCal=Calendar.getInstance();
int year =currCal.get(Calendar.YEAR);
currCal.clear();
currCal.set(Calendar.YEAR,year);
currCal.roll(Calendar.DAY_OF_YEAR, -1);
SimpleDateFormat sm = new SimpleDateFormat(“yyyy-MM-dd”);
return sm.format(currCal.getTime());
}

/**
*
* @description 用当前时间加密,截取20位
* @return
* @return String 返回类型
* @throws
* @date 2017年6月26日 下午8:56:34
/
public static String getDateMd5(){
return MD5Utils.EncoderByMd5(String.valueOf(new Date())).substring(2, 22);
}
/
*
*
* @description 描述
* @param timestamp 时间戳long值
* @param format 要转换的格式
* @return 返回类型
* @date 2018-01-25 15:25:49
*/
public static String timeStamp2FormatDateStr(String timestamp, String format) {
if (org.apache.commons.lang3.StringUtils.isBlank(timestamp)) {
return “”;
}
if (org.apache.commons.lang3.StringUtils.isBlank(format)) {
format = “yyyy-MM-dd HH:mm:ss”;
}
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(new Date(Long.valueOf(timestamp)));
}
//==================转换 iso时间为 date
public static Date formatDate2(String time){
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
try {
return sdf.parse(time);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
public static Date fromISODate(String time){
if(!time.matches("\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z")){
return null;
}
time=time.replaceFirst(“T”, " “).replaceFirst(”.\d{3}Z", “”);
Date date=formatDate2(time);
Calendar ca=Calendar.getInstance();
ca.setTime(date);
ca.add(Calendar.HOUR_OF_DAY, 8);
return ca.getTime();
}
/**
* 传入Data类型日期,返回字符串类型时间(ISO8601标准时间)
* @param date
* @return
*/
public static String getISO8601Timestamp(Date date){
TimeZone tz = TimeZone.getTimeZone(“UTC”);
DateFormat df = new SimpleDateFormat(“yyyy-MM-dd’T’HH:mm:ss.SSS’Z’”);
df.setTimeZone(tz);
String nowAsISO = df.format(date);
return nowAsISO;
}

/**
* 时间戳转日期
* @param ms
* @return
*/
public static Date transForDate(Long ms){
if(ms==null){
ms=(long)0;
}
long msl=(long)ms;
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
Date temp=null;
if(ms!=null){
try {
String str=sdf.format(msl);
temp=sdf.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
}
return temp;
}

/**
* 获取给定月的最后一天
*
* @param date
* @return
*/
public static Date getLastdayOfMonth(Date date) {
Calendar ca = Calendar.getInstance();
ca.setTime(date);// someDate 为你要获取的那个月的时间
ca.set(Calendar.DAY_OF_MONTH, 1);
ca.add(Calendar.MONTH, 1);
ca.add(Calendar.DAY_OF_MONTH, -1);
// 最后一天
Date lastDate = ca.getTime();
return lastDate;
}

/**
* 获取给定月的第一天
*
* @param date
* @return
*/
public static Date getFirstdayOfMonth(Date date) {
Calendar ca = Calendar.getInstance();
ca.setTime(date);// someDate 为你要获取的那个月的时间
ca.set(Calendar.DAY_OF_MONTH, 1);
// 第一天
Date firstDate = ca.getTime();
return firstDate;
}

/**
*
* @Description: 传入时间,获取当年的第一天
*
* @Param: date
* @return: java.util.Date
* @date: 2018-07-17 13:48
*/
public static Date getFirstDayDateOfYear(Date date) {
Calendar ca = Calendar.getInstance();
ca.setTime(date);// someDate 为你要获取的那年的时间
ca.set(Calendar.DAY_OF_YEAR, 1);
// 第一天
Date firstDate = ca.getTime();
return firstDate;
}

/**
*
* @Description: 传入时间,获取当年的最后第一天
*
* @Param: date
* @return: java.util.Date
* @date: 2018-07-17 13:48
*/
public static Date getLastDayOfYear(Date date) {
Calendar ca = Calendar.getInstance();
ca.setTime(date);// someDate 为你要获取的那年的时间
ca.set(Calendar.DAY_OF_YEAR, 1);
ca.add(Calendar.YEAR, 1);
ca.add(Calendar.DAY_OF_YEAR, -1);
// 最后一天
Date lastDate = ca.getTime();
return lastDate;
}

/**

  • 判断当月是否为季度的最后一个月
  • @param yyyyMM
  • @return
  • @throws ParseException
    /
    public static Boolean judgeQuarterLastMonth(String yyyyMM){
    Date date = null;
    try {
    date = formatToDayByYYYYMM(yyyyMM);
    } catch (ParseException e) {
    e.printStackTrace();
    return false;
    }
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    int month = c.get(Calendar.MONTH)+1;
    if (month%3==0){
    return true;
    }else {
    return false;
    }
    }
    /
    *
  • @Description: 获取年

*/
public static String getCurrentYear(){
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy”);
Date date = new Date();
return sdf.format(date);
}

public static void main(String[] args) throws ParseException {

System.out.println(setHours(new Date(),4));

}
}

相关标签: IT