package com.founder.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import org.apache.commons.lang.StringUtils;
import org.jfree.util.Log;
public class DateFunction {
public static SimpleDateFormat fmt = new SimpleDateFormat();
public static final long MILLIS_PER_MINUTE = 60 * 1000;
public static final long MILLIS_PER_HOUR = 60 * MILLIS_PER_MINUTE;
public static final long MILLIS_PER_DAY = 24 * MILLIS_PER_HOUR;
/**
* 获取给定时间date的前day天
*
* @param date
* @param day
* @return
*/
public static Date getDateBeforeDay(Date date, int day) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, -day);
Date _date = calendar.getTime();
return _date;
}
/**
* 获取给定时间后day天
* @author: qin.jian
* 2014-2-13 下午2:15:17
* @param date
* @param day
* @return
* Date
* each engineer has a duty to keep the code elegant
*/
public static Date getDateAfterDay(Date date, int day) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, day);
Date _date = calendar.getTime();
return _date;
}
/**
* 获取给定时间后day天
* @author: qin.jian
* 2014-2-13 下午2:15:17
* @param date
* @param day
* @return
* Date
* each engineer has a duty to keep the code elegant
*/
public static Date getDateAfterHours(Date date, int hours) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR_OF_DAY, hours);
Date _date = calendar.getTime();
return _date;
}
/**
* 获取指定时间的日期
* @author: slzs
* 2013-12-25 下午4:38:51
* @param hour 时
* @param minute 分
* @param second 秒
* @return Date
* each engineer has a duty to keep the code elegant
*/
public static Date getDateSetTime(int hour, int minute, int second) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, second);
Date date = calendar.getTime();
return date;
}
/**
* 获取指定格式时间字符串
* @author: slzs
* 2013-12-18 下午3:30:06
* @param pattern 自定义格式 yyyy-MM-dd HH:mm:ss
* @param date Date类型日期
* @return String 字符串格式日期
* each engineer has a duty to keep the code elegant
*/
public static String getStrDateFormat(String pattern, Date date) {
SimpleDateFormat fmt = new SimpleDateFormat();
fmt.applyPattern(pattern);
String dateStr = fmt.format(date);
return dateStr;
}
/**
* 获取指定格式时间字符串
* @author: slzs
* 2013-12-18 下午3:30:06
* @param pattern 自定义格式 yyyy-MM-dd HH:mm:ss
* @param dateStr String 日期格式字符
* @return Date类型日期
* each engineer has a duty to keep the code elegant
* @throws ParseException
*/
public static Date getDateFormat(String pattern, String dateStr) throws ParseException {
SimpleDateFormat fmt = new SimpleDateFormat();
if (pattern == null && dateStr != null) {
if (dateStr.length() == 19) {
fmt.applyPattern("yyyy-MM-dd HH:mm:ss");
} else if (dateStr.length() == 16) {
fmt.applyPattern("yyyy-MM-dd HH:mm");
} else if (dateStr.length() == 13) {
fmt.applyPattern("yyyy-MM-dd HH");
} else {
fmt.applyPattern("yyyy-MM-dd");
}
} else {
fmt.applyPattern(pattern);
}
Date date = fmt.parse(dateStr);
return date;
}
/**
* 获取系统日期字符串
* @author: slzs
* 2013-12-18 下午3:31:04
* @param pattern
* @return String
* each engineer has a duty to keep the code elegant
*/
public static String getStrDateFormat(String pattern) {
return getStrDateFormat(pattern, new Date());
}
/**
* 获取param月前/后的日期
* @author: slzs
* 2013-12-18 下午3:53:26
* @param date 基准日期
* @param month 传正数/负数加减月数
* @return Date
* each engineer has a duty to keep the code elegant
*/
public static Date getDateByMonth(Date date, int month) {
Calendar caldate = Calendar.getInstance();
caldate.add(Calendar.MONTH, month);
return caldate.getTime();
}
/**
* 获取基准日期若干天前的日期
*
* @param curDate
* String 基准日期
* @param days
* int 需要获取基准日期几天前的日期
* @return String
*/
public synchronized static String getBeforeDay(String curDate, int days) {
String oldDate = "";
try {
SimpleDateFormat fmt = new SimpleDateFormat();
if (curDate.length() == 19) {
fmt.applyPattern("yyyy-MM-dd HH:mm:ss");
} else if (curDate.length() == 16) {
fmt.applyPattern("yyyy-MM-dd HH:mm");
} else if (curDate.length() == 13) {
fmt.applyPattern("yyyy-MM-dd HH");
} else {
fmt.applyPattern("yyyy-MM-dd");
}
Calendar caldate = Calendar.getInstance();
Date date = fmt.parse(curDate);
caldate.setTimeInMillis(date.getTime());
caldate.add(Calendar.DATE, 0 - days);
/*
* oldDate = caldate.get(Calendar.YEAR) + "-" +
* (caldate.get(Calendar.MONTH) + 1) + "-" +
* caldate.get(Calendar.DAY_OF_MONTH);
*/
oldDate = fmt.format(caldate.getTime());
} catch (Exception e) {
return curDate;
}
return oldDate;
}
/**
* 对给定的时间值转为全文检索语法的时间, 如将2006-05-02 12:12:12 转为全文检索语法的时间 20060502121212
*
* @param strDate
* String
* @return String
*/
public static String getContentTimeNoSec(String strDate) {
if (strDate == null || "null".equals(strDate)) {
return ("null");
}
String strContent = strDate;
strContent = strContent.replaceAll(" ", "");
strContent = strContent.replaceAll("-", "");
strContent = strContent.replaceAll(":", "");
if (strContent.length() == 8) {
strContent = strContent + "0000";
} else if (strContent.length() == 12) {
strContent = strContent + "00";
}
return (strContent);
}
/**
* 以全文检索时间串形式返回给定时间若干小时前的时间
*
* @param curDate
* String
* @param hours
* int
* @return String
*/
public static String getYMDBeforeHour(String curDate, int hours) {
String oldtime = "";
try {
SimpleDateFormat fmt = new SimpleDateFormat();
fmt.applyPattern("yyyy-MM-dd HH:mm:ss");
Calendar caldate = new GregorianCalendar();
Date date = fmt.parse(curDate);
caldate.setTimeInMillis(date.getTime());
caldate.add(Calendar.HOUR_OF_DAY, 0 - hours);
fmt.applyPattern("yyyyMMddHHmmss");
oldtime = fmt.format(caldate.getTime());
} catch (Exception e) {
}
return oldtime;
}
/**
* 以全文检索时间串形式返回给定时间若干秒之前的时间
* @author wwwang
* @param curDate String
* @param seconds int
* @return String
*/
public static String getYMDAfterSeconds(String curDate, int seconds) {
String oldtime = "";
try {
SimpleDateFormat fmt = new SimpleDateFormat();
fmt.applyPattern("yyyyMMddHHmmss");
Calendar caldate = new GregorianCalendar();
Date date = fmt.parse(curDate);
caldate.setTimeInMillis(date.getTime());
caldate.add(Calendar.SECOND, seconds);
fmt.applyPattern("yyyyMMddHHmmss");
oldtime = fmt.format(caldate.getTime());
} catch (Exception e) {
Log.info(e);
}
return oldtime;
}
/**
* 将给定的时间 转换成Format的样式 输出
* @author: fanzd
* Dec 21, 2013 10:36:11 AM
* @param input
* @param aStringFormat
* @return
* String
* each engineer has a duty to keep the code elegant
*/
public static String getString(Date input, String aStringFormat) {
String strReturn = "";
if (input == null) {
strReturn = "3000-1-1";
} else {
SimpleDateFormat fmt = new SimpleDateFormat();
if (StringUtils.isBlank(aStringFormat)) {
aStringFormat = "yyyy-MM-dd";
}
fmt.applyPattern(aStringFormat);
strReturn = fmt.format(input.getTime());
}
return strReturn;
}
/**
* 把多少天的数字转换成对应的日期格式 add by zhangdan 比如今天2001-01-01,1天前就是2000-12-31
*
* @param strTime
* String 多少天的数字
* @return String 2001-01-01
*/
public static String getDBDateFromNum(String strNum) {
String strDate = null;
String strYear = null, strMonth = null, strDay = null;
Calendar calendar = new GregorianCalendar();
strDay = String.valueOf(calendar.get(Calendar.DAY_OF_MONTH));
calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(strDay) - Integer.parseInt(strNum));
strYear = String.valueOf(calendar.get(Calendar.YEAR));
strMonth = String.valueOf(calendar.get(Calendar.MONTH) + 1);
strDay = String.valueOf(calendar.get(Calendar.DAY_OF_MONTH));
if (strMonth.length() == 1) {
strMonth = "0" + strMonth;
}
if (strDay.length() == 1) {
strDay = "0" + strDay;
}
strDate = strYear + "-" + strMonth + "-" + strDay;
return strDate;
}
/**
* 获取给定时间前N个小时
* @author: qin.jian
* 2014-2-13 下午2:15:17
* @param date
* @param day
* @return
* Date
* each engineer has a duty to keep the code elegant
*/
public static Date getDateBeforeHours(Date date, int hours) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR_OF_DAY, -hours);
Date _date = calendar.getTime();
return _date;
}
/**
* <p>
* 返回系统时间组成的字符串。例如:20050828143158
* <p>
*
* @return String
*/
public static String getYYYYMMDDHHMMSS() {
Calendar c = Calendar.getInstance();
int y, m, d, h, mi, s;
String year, month, day, hour, minute, second;
String returnValue = "";
y = c.get(Calendar.YEAR);
m = c.get(Calendar.MONTH) + 1;
d = c.get(Calendar.DATE);
h = c.get(Calendar.HOUR_OF_DAY);
mi = c.get(Calendar.MINUTE);
s = c.get(Calendar.SECOND);
year = String.valueOf(y);
if (m <= 9) {
month = "0" + String.valueOf(m);
} else {
month = String.valueOf(m);
}
if (d <= 9) {
day = "0" + String.valueOf(d);
} else {
day = String.valueOf(d);
}
if (h <= 9) {
hour = "0" + String.valueOf(h);
} else {
hour = String.valueOf(h);
}
if (mi <= 9) {
minute = "0" + String.valueOf(mi);
} else {
minute = String.valueOf(mi);
}
if (s <= 9) {
second = "0" + String.valueOf(s);
} else {
second = String.valueOf(s);
}
returnValue = year + month + day + hour + minute + second;
return returnValue;
}
/**
* <p>
* 返回系统时间组成的字符串。例如:20050828
* <p>
*
* @return String
*/
public static String getYYYYMMDD() {
Calendar c = Calendar.getInstance();
int y, m, d;
String year, month, day;
String returnValue = "";
y = c.get(Calendar.YEAR);
m = c.get(Calendar.MONTH) + 1;
d = c.get(Calendar.DATE);
year = String.valueOf(y);
if (m <= 9) {
month = "0" + String.valueOf(m);
} else {
month = String.valueOf(m);
}
if (d <= 9) {
day = "0" + String.valueOf(d);
} else {
day = String.valueOf(d);
}
returnValue = year + month + day;
return returnValue;
}
/**
* 对给定的全文检索时间值转为数据库的时间 如将20060502121212 转为数据库的时间 2006-05-02 12:12:12
*
* @param strDate
* String
* @return String
*/
public static String getDBTime(String strTime) {
String strDBTime = "";
if (strTime == null || "null".equals(strTime)) {
return ("null");
}
try {
SimpleDateFormat fm = new SimpleDateFormat("yyyyMMddHHmmss");
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (strTime.length() == 10) {
fm = new SimpleDateFormat("yyyyMMddHH");
fmt = new SimpleDateFormat("yyyy-MM-dd HH");
} else if (strTime.length() == 8) {
fm = new SimpleDateFormat("yyyyMMdd");
fmt = new SimpleDateFormat("yyyy-MM-dd");
}
Date date = fm.parse(strTime);
strDBTime = fmt.format(date);
} catch (Exception e) {
}
return (strDBTime);
}
/**
* 对给定的时间值转为全文检索语法的时间,不补时分秒 如将2006-05-02转为全文检索语法的时间 20060502
*
* @param strDate
* String
* @return String
*/
public static String transContentTime(String strDate) {
if (strDate == null || "null".equals(strDate)) {
return ("null");
}
String strContent = strDate;
strContent = strContent.replaceAll(" ", "");
strContent = strContent.replaceAll("-", "");
strContent = strContent.replaceAll(":", "");
return (strContent);
}
public static String getIssueBeforeHour(String curDate, int hours) {
String oldtime = "";
try {
SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHH");
Calendar caldate = new GregorianCalendar();
Date date = fmt.parse(curDate);
caldate.setTimeInMillis(date.getTime());
caldate.add(Calendar.HOUR_OF_DAY, 0 - hours);
fmt = new SimpleDateFormat("yyyyMMddHH");
oldtime = fmt.format(caldate.getTime());
} catch (Exception e) {
}
return oldtime;
}
public static String getIssueBeforeDay(String curDate, int day) {
String oldtime = "";
try {
SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMdd");
Calendar caldate = new GregorianCalendar();
Date date = fmt.parse(curDate);
caldate.setTimeInMillis(date.getTime());
caldate.add(Calendar.DAY_OF_MONTH, -day);
fmt = new SimpleDateFormat("yyyyMMdd");
oldtime = fmt.format(caldate.getTime());
} catch (Exception e) {
}
return oldtime;
}
/**
* 以"yyyy-MM-dd HH:mm形式返回给定时间若干小时前的时间
*
* @param curDate
* String
* @param hours
* int
* @return String
*/
public static String getStrBeforeHour(String curDate, int hours) {
String olddate = "";
try {
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
if (curDate.length() == 19) {
fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
} else if (curDate.length() == 16) {
fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm");
} else if (curDate.length() == 13) {
fmt = new SimpleDateFormat("yyyy-MM-dd HH");
}
Calendar caldate = new GregorianCalendar();
Date date = fmt.parse(curDate);
caldate.setTimeInMillis(date.getTime());
caldate.add(Calendar.HOUR_OF_DAY, 0 - hours);
olddate = fmt.format(caldate.getTime());
} catch (Exception e) {
}
return olddate;
}
/**
* <p>
* 返回系统时间组成的字符串。例如:2005-08-28 15:00
* <p>
*
* @return String
*/
public static String getSystemHour() {
Calendar c = Calendar.getInstance();
String returnValue = "";
try {
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:00");
returnValue = fmt.format(c.getTime());
} catch (Exception e) {
}
return returnValue;
}
/**
* <p>
* 返回系统时间组成的字符串。例如:2005-08-28 15:00
* <p>
*
* @return String
*/
public static String getSystemDay() {
Calendar c = Calendar.getInstance();
String returnValue = "";
try {
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
returnValue = fmt.format(c.getTime());
} catch (Exception e) {
}
return returnValue;
}
/**
* 24小时记时法 将日期(Date)转换为字符串形式,默认转换为:"yyyy-MM-dd HH:mm:ss"
*
* @param date
* @return
*/
public static String formatDateSting(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = sdf.format(date);
return strDate;
}
/**
* 计算两个日期间的相隔天数
*
* @param date
* @param refDate
* @return
*/
public static long getBetweenDays(Date date, Date refDate) {
Date date1 = StringWrapper.parse(StringWrapper.format(date, StringWrapper.FORMATTER_SHORT), null);
Date refDate1 = StringWrapper.parse(StringWrapper.format(refDate, StringWrapper.FORMATTER_SHORT), null);
return ((refDate1.getTime() - date1.getTime()) / MILLIS_PER_DAY);
}
/**
* 获取基准日期若干天后的日期
*
* @param curDate
* String 基准日期
* @param days
* int 需要获取基准日期几天后的日期
* @return String
*/
public static String getAfterDay(String curDate, int days) {
String oldDate = "";
try {
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
if (curDate.length() == 19) {
fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
} else if (curDate.length() == 16) {
fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm");
} else if (curDate.length() == 13) {
fmt = new SimpleDateFormat("yyyy-MM-dd HH");
}
Calendar caldate = new GregorianCalendar();
Date date = fmt.parse(curDate);
caldate.setTimeInMillis(date.getTime());
caldate.add(Calendar.DATE, days);
oldDate = fmt.format(caldate.getTime());
} catch (Exception e) {
return curDate;
}
return oldDate;
}
/**
* formatTime 格式化输出时间
*
* @param aLongMillis
* long the number of milliseconds since January 1, 1970,
* 00:00:00 GMT represented by this date.
* @param aStringFormat
* 格式
* @return String
*/
public static String formatTime(long aLongMillis, String aStringFormat) {
String ret = "";
try {
Calendar caldate = new GregorianCalendar();
caldate.setTimeInMillis(aLongMillis);
SimpleDateFormat fmt = new SimpleDateFormat(aStringFormat);
ret = fmt.format(caldate.getTime());
} catch (Exception e) {
}
return ret;
}
/**
* 将输入的字符串日期转换为Date形式
*
* @param convertTime
* 日期格式为: "yyyy-MM-dd"
* @return Date
*/
public static Date getDate(String convertTime) {
Date returnValue = null;
try {
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
returnValue = fmt.parse(convertTime);
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
/**
* 获取指定日期的0点0分0秒
*
* @param date
* @return
*/
public static Date getZeroHour(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();
}
/**
* @author donggy
* 获取指定日期的结束时间
* @param date
* @return
*/
public static Date getZeroHour2(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
return calendar.getTime();
}
/**
*
* 获取当前时间之前或之后几小时 hour
* @param hour
* @return
*/
public static String getTimeByHour(int hour) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) + hour);
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());
}
public static String getYesterdayTimeByHour(Date date,int hour) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, -1);
calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) + hour);
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());
}
public static void main(String[] args) {
System.out.println(getYesterdayTimeByHour(getZeroHour(new Date()), 3));
}
}
获取指定时间
最新推荐文章于 2023-09-20 18:58:32 发布