这是本人在开发项目中遇到时间操作,大家可以对其进行完善,后者稍微改动,就可以满足自己的需求了,希望对各位开发有帮助
package com.tstd.suzhouproject.tools;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
/**
* TODO
*
* @author fxj
* @time 2017年8月16日
* @version 1.0bate
*
*/
public class TimeFormat {
/**
* BK时间格式
*
* @author fxj
* @time 2017年8月12日
* @version 1.0bate
*
*/
public DateFormat bKFormat = new SimpleDateFormat("yyyyMMddHHmmss");
public DateFormat queryFormat = new SimpleDateFormat("yyyy-MM-dd");
public DateFormat formatToDay = new SimpleDateFormat("yyyyMMdd");
/**
* 正常时间格式
*
* @time 2017年8月12日
* @author fxj
*/
public DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public DateFormat hourIntformatbk = new SimpleDateFormat("yyyyMMddHH0000");
public DateFormat dayIntformatx = new SimpleDateFormat("yyyyMMdd000000");
/**
* 小时时间取整
*
* @time 2017年8月12日
* @author fxj
*/
public DateFormat hourIntformat = new SimpleDateFormat("yyyy-MM-dd HH:00:00");
public DateFormat dayIntformat = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
/**
* 泰得思达格式
*
* @time 2017年8月13日
* @author fxj
*/
DateFormat taidesidaformat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
/**
* 返回interval几秒后时间
*
* @date 2017年8月12日
* @author fxj
* @param Time
* 初始时间
* @param interval
* 小时时间间隔
* @return
*/
public Date getSecondAfter(Date time, int interval) {
Calendar timeformat = Calendar.getInstance();
timeformat.setTime(time);
timeformat.set(Calendar.SECOND, timeformat.get(Calendar.SECOND) + interval);
return timeformat.getTime();
}
/**
* 字符串转日期
*
* @date 2017年8月13日
* @author fxj
* @param time
* 需要转换的时间
* @return
*/
public Date stringToDate(String time) {
Date date = new Date();
try {
// 判断字符串类型
if (time.indexOf("/") != -1) {
date = taidesidaformat.parse(time);
} else if (time.indexOf("-") != -1) {
date = format.parse(time);
} else {
date = bKFormat.parse(time);
}
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 日期转字符串
*
* @date 2017年8月13日
* @author fxj
* @param time需要转换的时间
* @param type时间类型
* @return
*/
public String DateToString(Date time, String type) {
String date = null;
switch (type) {
case "tdsd":
date = taidesidaformat.format(time);
break;
case "bk":
date = bKFormat.format(time);
break;
case "normal":
date = format.format(time);
break;
case "queryFormat":
date = queryFormat.format(time);
break;
}
return date;
}
/**
* <li>功能描述:时间相减得到天数
* @param beginDateStr
* @param endDateStr
* @return
* long
* @author Administrator
*/
public static long getDaySub(String beginDateStr,String endDateStr)
{
long day=0;
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");
java.util.Date beginDate;
java.util.Date endDate;
try
{
beginDate = format.parse(beginDateStr);
endDate= format.parse(endDateStr);
day=(endDate.getTime()-beginDate.getTime())/(24*60*60*1000);
//System.out.println("相隔的天数="+day);
} catch (ParseException e){
e.printStackTrace();
}
return day;
}
/**
* 获取小时前数据
*
* @date 2017年8月13日
* @author fxj
* @param time
* 需要判断的时间
* @param intervalhour
* 时间间隔
* @return
*/
public Date getHourBefore(String time, int intervalhour) {
Date date = stringToDate(time);
Calendar timeformat = Calendar.getInstance();
timeformat.setTime(date);
timeformat.set(Calendar.HOUR_OF_DAY, timeformat.get(Calendar.HOUR_OF_DAY) - intervalhour);
return timeformat.getTime();
}
/**
* 获取小时前数据
*
* @date 2017年8月13日
* @author fxj
* @param time
* 需要判断的时间
* @param intervalhour
* 时间间隔
* @return
*/
public Date getHourBefore(Date time, int intervalhour) {
Calendar timeformat = Calendar.getInstance();
timeformat.setTime(time);
timeformat.set(Calendar.HOUR_OF_DAY, timeformat.get(Calendar.HOUR_OF_DAY) - intervalhour);
return timeformat.getTime();
}
/**
* 获取intervalhour天前数据
*
* @date 2017年8月13日
* @author fxj
* @param time
* 需要判断的时间
* @param intervalhour
* 时间间隔
* @return
*/
public long getDayAfterstamp(String time, int intervalhour) {
Long datelong = Long.valueOf(time);
String dateString = format.format(datelong * 1000);
Date date = null;
try {
date = format.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar timeformat = Calendar.getInstance();
timeformat.setTime(date);
timeformat.set(Calendar.DAY_OF_YEAR, timeformat.get(Calendar.DAY_OF_YEAR) + intervalhour);
return getTimestamp(timeformat.getTime());
}
/**
* 获取intervalday小时前数据
*
* @date 2017年8月13日
* @author fxj
* @param time
* 需要判断的时间
* @param intervalhour
* 时间间隔
* @return
*/
public long getHourAfterstamp(String time, int intervalhour) {
Long datelong = Long.valueOf(time);
String dateString = format.format(datelong * 1000);
Date date = null;
try {
date = format.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar timeformat = Calendar.getInstance();
timeformat.setTime(date);
timeformat.set(Calendar.HOUR_OF_DAY, timeformat.get(Calendar.HOUR_OF_DAY) + intervalhour);
return getTimestamp(timeformat.getTime());
}
/**
* 获取小时后数据
*
* @date 2017年8月13日
* @author fxj
* @param time
* 需要判断的时间
* @param intervalhour
* 时间间隔
* @return
*/
public Date getHourAfter(String time, int intervalhour) {
Date date = stringToDate(time);
Calendar timeformat = Calendar.getInstance();
timeformat.setTime(date);
timeformat.set(Calendar.HOUR_OF_DAY, timeformat.get(Calendar.HOUR_OF_DAY) + intervalhour);
return timeformat.getTime();
}
/**
* 获取小时后数据
*
* @date 2017年8月13日
* @author fxj
* @param time
* 需要判断的时间
* @param intervalhour
* 时间间隔
* @return
*/
public Date getHourAfter(Date time, int intervalhour) {
Calendar timeformat = Calendar.getInstance();
timeformat.setTime(time);
timeformat.set(Calendar.HOUR_OF_DAY, timeformat.get(Calendar.HOUR_OF_DAY) + intervalhour);
return timeformat.getTime();
}
/**
* 获取intervalday天后数据
*
* @date 2017年8月13日
* @author fxj
* @param time
* 需要判断的时间
* @param intervalhour
* 时间间隔
* @return
*/
public Date getDayAfter(Date time, int intervalhour) {
Calendar timeformat = Calendar.getInstance();
timeformat.setTime(time);
timeformat.set(Calendar.DAY_OF_YEAR, timeformat.get(Calendar.DAY_OF_YEAR) + intervalhour);
return timeformat.getTime();
}
/**
* 获取intervalday天前数据
*
* @date 2017年8月13日
* @author fxj
* @param time
* 需要判断的时间
* @param intervalhour
* 时间间隔
* @return
*/
public Date getDaybefore(Date time, int intervalhour) {
Calendar timeformat = Calendar.getInstance();
timeformat.setTime(time);
timeformat.set(Calendar.DAY_OF_YEAR, timeformat.get(Calendar.DAY_OF_YEAR) - intervalhour);
return timeformat.getTime();
}
// /**
// * 获取intervalday天后数据
// *
// * @date 2017年8月13日
// * @author fxj
// * @param time
// * 需要判断的时间
// * @param intervalhour
// * 时间间隔
// * @return
// */
// public Date getDayBefore(Date time, int intervalhour) {
// Calendar timeformat = Calendar.getInstance();
// timeformat.setTime(time);
// timeformat.set(Calendar.DAY_OF_YEAR, timeformat.get(Calendar.DAY_OF_YEAR) - intervalhour);
// return timeformat.getTime();
// }
/**
* 返回interval分钟后时间
*
* @date 2017年8月12日
* @author fxj
* @param Time
* 初始时间
* @param interval
* 小时时间间隔
* @return
*/
public Date getMinuteAfter(String time, int interval) {
Date date = stringToDate(time);
Calendar timeformat = Calendar.getInstance();
timeformat.setTime(date);
timeformat.set(Calendar.MINUTE, timeformat.get(Calendar.MINUTE) + interval);
return timeformat.getTime();
}
/**
* 返回interval分钟后时间
*
* @date 2017年8月12日
* @author fxj
* @param Time
* 初始时间
* @param interval
* 小时时间间隔
* @return
*/
public Date getMinuteAfter(Date time, int interval) {
Calendar timeformat = Calendar.getInstance();
timeformat.setTime(time);
timeformat.set(Calendar.MINUTE, timeformat.get(Calendar.MINUTE) + interval);
return timeformat.getTime();
}
/**
* 小时取整
*
* @date 2017年8月13日
* @author fxj
* @param time
* @return
*/
public Date getIntHour(Date time) {
String nowDate = hourIntformat.format(time);
Date date = null;
try {
date = hourIntformat.parse(nowDate);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 天取整
*
* @date 2017年8月13日
* @author fxj
* @param time
* @return
*/
public Date getIntDay(Date time) {
String nowDate = dayIntformat.format(time);
Date date = null;
try {
date = hourIntformat.parse(nowDate);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public String getTimestampToDay(long time) {
String nowDate = dayIntformat.format(time * 1000);
Date date = null;
try {
date = dayIntformat.parse(nowDate);
} catch (ParseException e) {
e.printStackTrace();
}
return formatToDay.format(date);
}
/**
* 是否在当前时间前
*
* @date 2017年8月13日
* @author fxj
* @param tdsdTime
* @return
*/
public boolean isBeforeNow(String time, String type) {
Date date = null;
Date now = new Date();
String nowDate = dayIntformat.format((new Date()));
try {
if (type.equalsIgnoreCase("day")) {
date = dayIntformat.parse(nowDate);
} else if (type.equalsIgnoreCase("hour")) {
date = hourIntformat.parse(time);
}
} catch (ParseException e) {
e.printStackTrace();
}
return date.before(now);
}
/**
* 时间转时间戳
*
* @date 2017年8月12日
* @author fxj
* @param time
* @return
*/
public long getTimestamp(String time) {
long times = Timestamp.valueOf(time).getTime() / 1000;
return times;
}
/**
* 时间转时间戳
*
* @date 2017年8月12日
* @author fxj
* @param time
* @return
*/
public long getTimestamp(Date time) {
long times = (time.getTime()) / 1000;
return times;
}
/**
* 时间戳转字符串
*
* @date 2017年8月14日
* @author fxj
* @param time
* @return
*/
public String timestampToString(long time) {
String date = bKFormat.format(time * 1000);
return date;
}
/**
* 时间精确到天
*
* @date 2017年8月14日
* @author fxj
* @param time
* @return
*/
public String getTimestampIntDay(long time) {
String nowDate = dayIntformat.format(time * 1000);
Date date = null;
try {
date = dayIntformat.parse(nowDate);
} catch (ParseException e) {
e.printStackTrace();
}
return String.valueOf(getTimestamp(date));
}
/**
* 获取正常格式时间
*
* @date 2017年8月12日
* @author fxj
* @param time需要转换的时间
* @return
*/
public String getNormalDate(String time) {
String date = time;
if (time.indexOf("T") != -1) {
date = date.replace("T", " ");
if (time.length() == 22) {
// date = date.replace("5Z", "00");
date = date.substring(0, date.length() - 3);
} else {
date = date.replace("Z", "9");
}
} else if (time.indexOf("/") != -1) {
date = date.replace("/", "-");
}
return date;
}
//判断当前时间是星期几
public int dayForWeek(String time) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd" );
Calendar c = Calendar.getInstance();
try {
c.setTime(format.parse(time));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int dayForWeek = 0 ;
if (c.get(Calendar.DAY_OF_WEEK) == 1 ){
dayForWeek = 7 ;
}else {
dayForWeek = c.get(Calendar.DAY_OF_WEEK) - 1 ;
}
return dayForWeek;
}
/**
* 获取周一和周日时间
*
* @date 2017年8月16日
* @author fxj
* @param time
* @return
*/
public String[] getWeekTime(String time) {
String[] weekday = new String[3];
try {
Date date = format.parse(time + " 00:00:00");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
weekday[2] = String.valueOf(cal.get(Calendar.WEEK_OF_YEAR));
if(cal.get(Calendar.WEEK_OF_YEAR)==1){
cal.set(Calendar.WEEK_OF_YEAR, cal.get(Calendar.WEEK_OF_YEAR) - 1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
weekday[0] = format.format(cal.getTime());
cal.set(Calendar.WEEK_OF_YEAR, cal.get(Calendar.WEEK_OF_YEAR) + 1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
weekday[1] = format.format(cal.getTime());
}else {
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
weekday[0] = format.format(cal.getTime());
cal.set(Calendar.WEEK_OF_YEAR, cal.get(Calendar.WEEK_OF_YEAR) + 1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
weekday[1] = format.format(cal.getTime());
}
} catch (ParseException e) {
e.printStackTrace();
}
return weekday;
}
/**
* 获取月时间
*
* @date 2017年8月16日
* @author fxj
* @param time
* @return
*/
public String[] getMonthTime(String time) {
String[] month = new String[2];
try {
Date date = format.parse(time + " 00:00:00");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.DAY_OF_MONTH, 1);
month[0] = format.format(cal.getTime());
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DATE));
month[1] = format.format(cal.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
return month;
}
/**
* 获取当前月份最大天数
*
* @date 2017年9月11日
* @author fxj
* @return
*/
public int getDayOfMonth(String time) {
int day = 0;
try {
Date date = queryFormat.parse(time);
Calendar aCalendar = Calendar.getInstance();
aCalendar.setTime(date);
day = aCalendar.getActualMaximum(Calendar.DATE);
} catch (ParseException e) {
e.printStackTrace();
}
return day;
}
/**
* 获取每周第几天
*
* @date 2017年8月16日
* @author fxj
* @param time
* @return
*/
public String getWeekDay(String time) {
String weekday = new String();
try {
Date date = formatToDay.parse(time);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int dayOfWeek = 0;
if (cal.get(Calendar.DAY_OF_WEEK) != 1) {
dayOfWeek = cal.get(Calendar.DAY_OF_WEEK) - 1;
} else {
dayOfWeek = 7;
}
weekday = String.valueOf(dayOfWeek);
} catch (ParseException e) {
e.printStackTrace();
}
return weekday;
}
/**
* 获取季度首尾月份
*
* @date 2017年12月1日
* @author fxj
* @param mouth
* @return
*/
public String[] getSeason(String mouth) {
String[] seasonTime = new String[2];
int monthnumber = Integer.valueOf(mouth);
Calendar a = Calendar.getInstance();
int year = a.get(Calendar.YEAR);
if (3 <= monthnumber && monthnumber <= 5) {
seasonTime[0] = year + "12";
seasonTime[1] = year + "02";
} else if (6 <= monthnumber && monthnumber <= 8) {
seasonTime[0] = year + "03";
seasonTime[1] = year + "05";
} else if (9 <= monthnumber && monthnumber <= 11) {
seasonTime[0] = year + "06";
seasonTime[1] = year + "08";
} else if (monthnumber == 12) {
seasonTime[0] = year + "09";
seasonTime[1] = year + "11";
} else {
seasonTime[0] = year - 1 + "09";
seasonTime[1] = year - 1 + "11";
}
return seasonTime;
}
/**
* 获取上一季度季度首尾月份
*
* @date 2018年4月2日
* @author fxj
* @param mouth
* @return
*/
public String[] get_Season(String year_mouth) {
String[] seasonTime = new String[2];
int year_mouth1=Integer.valueOf(year_mouth);
String mouth=String.valueOf(year_mouth1-3).substring(4, 6);
int monthnumber = Integer.valueOf(mouth);
String year_time=String.valueOf(year_mouth1-3).substring(0, 4);
int year= Integer.valueOf(year_time);
if (1 <= monthnumber && monthnumber <= 3) {
seasonTime[0] = year + "01";
seasonTime[1] = year + "03";
} else if (4 <= monthnumber && monthnumber <= 6) {
seasonTime[0] = year + "04";
seasonTime[1] = year + "06";
} else if (7 <= monthnumber && monthnumber <= 9) {
seasonTime[0] = year + "07";
seasonTime[1] = year + "09";
} else {
seasonTime[0] = year + "10";
seasonTime[1] = year + "12";
}
return seasonTime;
}
/**
* 获取本季度季度首尾月份
*
* @date 2018年4月2日
* @author fxj
* @param mouth
* @return
*/
public String[] get_Season1(String time) {
String[] seasonTime = new String[2];
String mouth=String.valueOf(time).substring(5, 7);
int monthnumber = Integer.valueOf(mouth);
String year_time=String.valueOf(time).substring(0, 4);
int year= Integer.valueOf(year_time);
if (1 <= monthnumber && monthnumber <= 3) {
seasonTime[0] = year + "-01";
seasonTime[1] = year + "-03";
} else if (4 <= monthnumber && monthnumber <= 6) {
seasonTime[0] = year + "-04";
seasonTime[1] = year + "-06";
} else if (7 <= monthnumber && monthnumber <= 9) {
seasonTime[0] = year + "-07";
seasonTime[1] = year + "-09";
} else {
seasonTime[0] = year + "-10";
seasonTime[1] = year + "-12";
}
return seasonTime;
}
}