时间工具类

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package com.sprucetec.pdms.utils.util;

import com.sprucetec.pdms.utils.exception.InvalidParamException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class DateUtil {
public static final String YMD = "yyyy-MM-dd";
public static final String YMDHMS = "yyyy-MM-dd HH:mm:ss";
public static final String KEY_INT_STARTTIME = "intStarttime";
public static final String KEY_STR_STARTTIME = "strStarttime";
public static final String KEY_INT_ENDTIME = "intEndtime";
public static final String KEY_STR_ENDTIME = "strEndtime";

public DateUtil() {
}

public static int getCurrentTimeIntValue() {
int sencends = (int)(System.currentTimeMillis() / 1000L);
return sencends;
}

public static int getAppointedTimeIntValue(String time, String format) {
SimpleDateFormat f = new SimpleDateFormat(format);
Date date = null;

try {
date = f.parse(time);
} catch (ParseException var5) {
return -1;
}

return (int)(date.getTime() / 1000L);
}

public static Date getDateByTimeStamp(int timeStamp, String format) {
SimpleDateFormat f = new SimpleDateFormat(format);
String d = f.format(Long.valueOf((long)timeStamp * 1000L));
Date date = null;

try {
date = f.parse(d);
} catch (ParseException var6) {
date = null;
}

return date;
}

public static String getDateStringByTimeStamp(Integer timeStamp, String format) {
SimpleDateFormat f = new SimpleDateFormat(format);
String d = "";
if(timeStamp != null) {
d = f.format(Long.valueOf((long)timeStamp.intValue() * 1000L));
}

return d;
}

public static String formatDate(Object datetime, String format) {
SimpleDateFormat f = new SimpleDateFormat(format);
if(datetime instanceof Date) {
return f.format((Date)datetime);
} else if(datetime instanceof Long) {
return f.format(new Date(((Long)datetime).longValue()));
} else {
throw new InvalidParamException("param datetime must be a Date or Long.");
}
}

public static int getTimesmorning(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(11, 0);
cal.set(13, 0);
cal.set(12, 0);
cal.set(14, 0);
return (int)(cal.getTimeInMillis() / 1000L);
}

public static int getTimesnight(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(11, 23);
cal.set(13, 59);
cal.set(12, 59);
cal.set(14, 999);
return (int)(cal.getTimeInMillis() / 1000L);
}

public static String formatDateToString(Date date, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return date == null?"":sdf.format(date);
}

public static Map<String, Object> formatStarttimeAndEndtime(String format, String strStarttime, String strEndtime, Integer intStarttime, Integer intEndtime) {
HashMap timeMap = new HashMap();
if(format == null) {
timeMap.put("strStarttime", (Object)null);
timeMap.put("intStarttime", (Object)null);
timeMap.put("strEndtime", (Object)null);
timeMap.put("intEndtime", (Object)null);
return timeMap;
} else {
boolean ymd = false;
boolean ymdhms = false;
format = format.trim();
int formatLen = format.length();
int ymdLen = "yyyy-MM-dd".length();
int ymdhmsLen = "yyyy-MM-dd HH:mm:ss".length();
if(formatLen == ymdLen) {
ymd = true;
} else if(formatLen == ymdhmsLen) {
ymdhms = true;
}

if(strStarttime != null && "".equals(strStarttime.trim())) {
strStarttime = null;
}

if(strEndtime != null && "".equals(strEndtime.trim())) {
strEndtime = null;
}

if(intStarttime != null && intStarttime.intValue() <= 0) {
intStarttime = null;
}

if(intEndtime != null && intEndtime.intValue() <= 0) {
intEndtime = null;
}

Date currentTime = new Date();
int intCurrentTime = (int)(currentTime.getTime() / 1000L);
int intTodayTimesmorning = getTimesmorning(currentTime);
String strTodayTimesmorning = getDateStringByTimeStamp(Integer.valueOf(intTodayTimesmorning), format);
int intTodayTimesnight = getTimesnight(currentTime);
String strTodayTimesnight = getDateStringByTimeStamp(Integer.valueOf(intTodayTimesnight), format);
if(strStarttime == null && strEndtime == null) {
if((intStarttime != null || intEndtime != null) && (strStarttime == null || strEndtime == null) && strStarttime != null) {
;
}
} else {
if(strStarttime != null && strEndtime != null) {
intStarttime = Integer.valueOf(getAppointedTimeIntValue(strStarttime, format));
intEndtime = Integer.valueOf(getAppointedTimeIntValue(strEndtime, format));
} else if(strStarttime != null) {
intStarttime = Integer.valueOf(getAppointedTimeIntValue(strStarttime, format));
intEndtime = Integer.valueOf(intTodayTimesnight);
strEndtime = strTodayTimesnight;
} else {
intEndtime = Integer.valueOf(getAppointedTimeIntValue(strEndtime, format));
if(ymdhms) {
strStarttime = "1970-01-01 00:00:00";
} else {
strStarttime = "1970-01-01";
}

intStarttime = Integer.valueOf(getAppointedTimeIntValue(strStarttime, format));
}

if(ymd) {
intStarttime = Integer.valueOf(getTimesmorning(getDateByTimeStamp(intStarttime.intValue(), format)));
strStarttime = getDateStringByTimeStamp(intStarttime, format);
intEndtime = Integer.valueOf(getTimesnight(getDateByTimeStamp(intEndtime.intValue(), format)));
strEndtime = getDateStringByTimeStamp(intEndtime, format);
}

if(intStarttime.intValue() > intEndtime.intValue()) {
intStarttime = Integer.valueOf(getTimesmorning(getDateByTimeStamp(intEndtime.intValue(), format)));
strStarttime = getDateStringByTimeStamp(intStarttime, format);
}

if(intStarttime.intValue() > intCurrentTime) {
intStarttime = Integer.valueOf(intTodayTimesmorning);
strStarttime = getDateStringByTimeStamp(intStarttime, format);
}

if(intStarttime.equals(intEndtime)) {
intStarttime = Integer.valueOf(getTimesmorning(getDateByTimeStamp(intStarttime.intValue(), format)));
strStarttime = getDateStringByTimeStamp(intStarttime, format);
}
}

timeMap.put("strStarttime", strStarttime);
timeMap.put("intStarttime", intStarttime);
timeMap.put("strEndtime", strEndtime);
timeMap.put("intEndtime", intEndtime);
return timeMap;
}
}

public static Set<Integer> strTimesToIntTimes(String strTimes, String split, String foratter) {
HashSet intTimeSet = new HashSet();
String[] dts = strTimes.split(split);
String[] var5 = dts;
int var6 = dts.length;

for(int var7 = 0; var7 < var6; ++var7) {
String str = var5[var7];
if(str != null && !"".equals(str.trim())) {
try {
intTimeSet.add(Integer.valueOf(getAppointedTimeIntValue(str.trim(), foratter)));
} catch (Exception var10) {
;
}
}
}

return intTimeSet;
}

public static String foratterIntTime(Integer intTime) {
if(intTime != null && intTime.intValue() > 0) {
int h = intTime.intValue() / 60;
int m = intTime.intValue() % 60;
String hh = h + "";
String mm = m + "";
if(hh.length() == 1) {
hh = "0" + h;
}

if(mm.length() == 1) {
mm = "0" + m;
}

return hh + ":" + mm;
} else {
return "00:00";
}
}

public static Integer foratterStrTime(String strTime) {
String strDateTime = "1970-01-01 " + strTime + ":00";
Integer result = Integer.valueOf(0);

try {
Integer intTime = Integer.valueOf(getAppointedTimeIntValue(strDateTime, "yyyy-MM-dd HH:mm:ss"));
String hh = getDateStringByTimeStamp(intTime, "HH");
String mm = getDateStringByTimeStamp(intTime, "mm");
int h = Integer.parseInt(hh, 10);
int m = Integer.parseInt(mm);
result = Integer.valueOf(h * 60 + m);
} catch (Exception var8) {
;
}

return result;
}

public static Integer foratterDateTime(String strDateTime) {
Integer resultIntTime = Integer.valueOf(0);
if(strDateTime == null) {
return resultIntTime;
} else {
strDateTime = strDateTime.trim();
SimpleDateFormat sdf = new SimpleDateFormat();
if(!"".equals(strDateTime) && strDateTime.indexOf("date") != 0) {
if(strDateTime.indexOf("time") == 0) {
if(strDateTime.length() > 4) {
switch(strDateTime.toCharArray()[4]) {
case 'H':
case 'h':
sdf = new SimpleDateFormat("HH");
break;
case 'M':
case 'm':
sdf = new SimpleDateFormat("HH:mm");
break;
case 'S':
sdf = new SimpleDateFormat("HH:mm:ss:SSS");
break;
case 's':
sdf = new SimpleDateFormat("HH:mm:ss");
}

strDateTime = sdf.format(new Date());
} else {
sdf = new SimpleDateFormat("HH:mm:ss");
strDateTime = sdf.format(new Date());
}

resultIntTime = foratterDateTime(strDateTime);
} else if(strDateTime.indexOf("datetime") != 0 && strDateTime.indexOf("-") <= 0 && strDateTime.indexOf("/") <= 0) {
String[] strArrTime = strDateTime.split(":");
int strArrLenTime = strArrTime.length;
if(strArrLenTime == 1) {
resultIntTime = Integer.valueOf(Integer.parseInt(strArrTime[0]));
} else if(strArrLenTime == 2) {
resultIntTime = Integer.valueOf(Integer.parseInt(strArrTime[0]) * 60 + Integer.parseInt(strArrTime[1]));
} else if(strArrLenTime == 3) {
resultIntTime = Integer.valueOf(Integer.parseInt(strArrTime[0]) * 60 * 60 + Integer.parseInt(strArrTime[1]) * 60 + Integer.parseInt(strArrTime[2]));
} else {
resultIntTime = Integer.valueOf(0);
}
}
}

return resultIntTime;
}
}

public static int getCurrentTimeMinuteValue() {
Integer result = Integer.valueOf(0);

try {
Integer intTime = Integer.valueOf(getCurrentTimeIntValue());
String hh = getDateStringByTimeStamp(intTime, "HH");
String mm = getDateStringByTimeStamp(intTime, "mm");
int h = Integer.parseInt(hh, 10);
int m = Integer.parseInt(mm);
result = Integer.valueOf(h * 60 + m);
} catch (Exception var6) {
;
}

return result.intValue();
}

public static void main(String[] args) {
int i = getCurrentTimeMinuteValue();
System.out.println(i);
System.out.println(foratterIntTime(Integer.valueOf(i)));
System.out.println(foratterStrTime("11:25"));
Integer timeint = foratterDateTime("timeM");
System.out.println(foratterIntTime(timeint));
}

public static Date gregorianCalendar(Date date, int value, int field) {
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(date);
gc.add(field, value);
date = gc.getTime();
return date;
}

public static Integer addDay(Integer intDate, int day) {
Integer result = Integer.valueOf(0);
int oneDay = 86400;
result = Integer.valueOf(intDate.intValue() + day * oneDay);
return result;
}

public static Integer addDay(Date date, int day) {
Integer intDate = Integer.valueOf((int)(date.getTime() / 1000L));
Integer result = Integer.valueOf(0);
int oneDay = 86400;
result = Integer.valueOf(intDate.intValue() + day * oneDay);
return result;
}

public static Integer getAgeByStartDate(int startTime) {
Date startDate = getDateByTimeStamp(startTime, "yyyy-MM-dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
Calendar startCal = Calendar.getInstance();
startCal.setTime(startDate);
if(cal.before(startCal)) {
return Integer.valueOf(0);
} else {
int year = cal.get(1);
int month = cal.get(2);
int day = cal.get(5);
int startYear = startCal.get(1);
int startMonth = startCal.get(2);
int startDay = startCal.get(5);
int age = year - startYear;
if(month > startMonth) {
++age;
} else if(month == startMonth && day >= startDay) {
++age;
}

return Integer.valueOf(age);
}
}
}
原文地址:https://www.cnblogs.com/duyinqiang/p/7150378.html