package net.joystart.common.util.date;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
/**
* 工具类 时间格式转换
*
* @author aigo
*
*/
public class UtilTimeFormatter {
private static final SimpleDateFormat dateymd = new SimpleDateFormat("yyyy-MM-dd");
private static final SimpleDateFormat dateym = new SimpleDateFormat("yyyy-MM");
private static final SimpleDateFormat dateymdCN = new SimpleDateFormat("yyyy年MM月dd日");
private static final SimpleDateFormat dateymdhms = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private static final SimpleDateFormat dateymdhmssss = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
private static final SimpleDateFormat datehms = new SimpleDateFormat("HH:mm:ss");
private static final SimpleDateFormat dateymdhm = new SimpleDateFormat("yyyy-MM-dd HH:mm");
private static final SimpleDateFormat dateymdhmsCN = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
private static final SimpleDateFormat dateymdhmsNum = new SimpleDateFormat("yyyyMMddHHmmss");
private static final SimpleDateFormat dateymdhmssssNum = new SimpleDateFormat("yyyyMMddHHmmssSSS");
private static final SimpleDateFormat subDate = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
private static final SimpleDateFormat datemdhm = new SimpleDateFormat("MM-dd HH:mm");
private static final SimpleDateFormat hm = new SimpleDateFormat("HH:mm");
public static String getdateymdhmsSSS(long date) {
String time = dateymdhmssss.format(new Date(date));
return time;
}
public static Calendar getCalendar(long date) {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(date);
return cal;
}
public static String[] subDate(long currentDate) {
subDate.setTimeZone(TimeZone.getTimeZone("Etc/Greenwich"));
String time = subDate.format(new Date(currentDate));
// System.out.println(time);
String[] sub = time.split("-");
return sub;
}
public static String getdateymdhmsNum(long date) {
String time = dateymdhmsNum.format(new Date(date));
return time;
}
public static String getDatemdhm(long date) {
String time = datemdhm.format(new Date(date));
return time;
}
public static String getdateymdhmsNum(Date date) {
String time = dateymdhmsNum.format(date);
return time;
}
public static String getdateymNum(String date){
java.util.Date dateStr;
try {
dateStr = dateymd.parse(date);
String time = dateym.format(dateStr);
return time;
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
public static String getdateymdhmsSSSNum(Date date) {
String time = dateymdhmssssNum.format(date);
return time;
}
public static String getTimeToYMD(long date) {
String time = dateymd.format(new Date(date));
return time;
}
public static String getTimeToYMD(Date date) {
if (date == null)
return "";
String time = dateymd.format(date);
return time;
}
public static String getTimeToYMD(String date) {
if (date == null)
return "";
long ltime = 0;
try {
ltime = dateymd.parse(date).getTime();
} catch (ParseException e) {
e.printStackTrace();
}
return getTimeToYMD(ltime);
}
public static String getTimeToYMDHMS(long date) {
String time = dateymdhms.format(new Date(date));
return time;
}
public static String getTimeToYMDHM(long date) {
String time = dateymdhm.format(new Date(date));
return time;
}
public static Timestamp getTimestampToYMDHMS(long date) {
String time = dateymdhms.format(new Date(date));
return convertDateYMDHMS(time);
}
public static Date getDateToYMDHMS(long date) {
return new Date(date);
}
public static String getTimeToYMDHMS(Date date) {
String time = dateymdhms.format(date);
return time;
}
public static String getTimeToYMDHMS(String date) {
String time = dateymdhms.format(date);
return time;
}
public static String getTimeToYMDHMSCN(long date) {
String time = dateymdhmsCN.format(new Date(date));
return time;
}
public static String getTimeToYMDHMSCN(Date date) {
String time = dateymdhmsCN.format(date);
return time;
}
public static String getTimeToYMDHM(Date date) {
String time = dateymdhm.format(date);
return time;
}
public static String getTimeToYMDCN(long date) {
String time = dateymdCN.format(new Date(date));
return time;
}
public static String getTimeToYMDCN(Date date) {
String time = dateymdCN.format(date);
return time;
}
public static String getStringTimeYMDHMS(String time) {
try {
if (time.equals("null"))
return "";
java.util.Date date = dateymdhms.parse(time);
String time1 = dateymdhms.format(date);
return time1;
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
public static String getStringTimeYMD(String time) {
try {
if (time.equals("null") || time == null)
return "";
java.util.Date date = dateymd.parse(time);
String time1 = dateymd.format(date);
return time1;
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
public static Timestamp convertDateYMD(String adateStrteStr) {
java.util.Date date = null;
try {
date = dateymd.parse(adateStrteStr);
Timestamp d = new Timestamp(date.getTime());
return d;
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
public static Timestamp convertDateYMDHMS(String adateStrteStr) {
java.util.Date date = null;
try {
date = dateymdhms.parse(adateStrteStr);
Timestamp d = new Timestamp(date.getTime());
return d;
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
public static long getlongDateYMDHMS(String dateStr) {
java.util.Date date = null;
if (dateStr == null || dateStr.equals("")) {
return 0;
}
try {
date = dateymdhms.parse(dateStr);
return date.getTime();
} catch (Exception ex) {
ex.printStackTrace();
}
return 0;
}
public static String timestampToStringYMDHMS(Timestamp time) {
return dateymdhms.format(time);
}
public static String timestampToStringHMS(Timestamp time) {
return datehms.format(time);
}
public static String timestampToStringYMDHM(Timestamp time) {
return dateymdhm.format(time);
}
public static String dateAddHour(String time) {
try {
java.util.Date date = dateymdhms.parse(time);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int hour = cal.get(Calendar.HOUR_OF_DAY);
cal.set(Calendar.HOUR_OF_DAY, hour + 8);
date = cal.getTime();
String time1 = dateymdhms.format(date);
return time1;
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
public static int getCurrGMT() {
Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("GMT-8:00"));
int time = (int) (cal.getTime().getTime() / 1000);
return time;
}
public static boolean ymdhmsCompareTo(String timeOne, String timeTwo) {
Calendar calone = Calendar.getInstance();
Calendar caltwo = Calendar.getInstance();
try {
calone.setTime(dateymdhms.parse(timeOne));
caltwo.setTime(dateymdhms.parse(timeTwo));
if (calone.compareTo(caltwo) == 0) {
return true;
}
return false;
} catch (ParseException e) {
e.printStackTrace();
return false;
}
}
public static boolean ymdhmsCompareToOne_LessORequal_Two(String timeOne, String timeTwo) {
Calendar calone = Calendar.getInstance();
Calendar caltwo = Calendar.getInstance();
try {
calone.setTime(dateymdhms.parse(timeOne));
caltwo.setTime(dateymdhms.parse(timeTwo));
if (calone.compareTo(caltwo) <= 0) {
return true;
}
return false;
} catch (ParseException e) {
e.printStackTrace();
return false;
}
}
public static boolean compareTo(String timeOne, String timeTwo) {
Calendar calone = Calendar.getInstance();
Calendar caltwo = Calendar.getInstance();
try {
calone.setTime(dateymd.parse(timeOne));
caltwo.setTime(dateymd.parse(timeTwo));
if (calone.compareTo(caltwo) == 0) {
return true;
}
return false;
} catch (ParseException e) {
e.printStackTrace();
return false;
}
}
public static boolean compareToOne_LessORequal_Two(String timeOne, String timeTwo) {
Calendar calone = Calendar.getInstance();
Calendar caltwo = Calendar.getInstance();
try {
calone.setTime(dateymd.parse(timeOne));
caltwo.setTime(dateymd.parse(timeTwo));
if (calone.compareTo(caltwo) <= 0) {
return true;
}
return false;
} catch (ParseException e) {
e.printStackTrace();
return false;
}
}
public static void main(String[] args) {
UtilTimeFormatter.subDate(System.currentTimeMillis());
System.out.println(isTimeRange(System.currentTimeMillis(), "22:15", "23:59"));
}
// 获取当前时间加N天的方法
public static Date afterNDay(int n) {
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.DATE, n);
Date d2 = c.getTime();
return d2;
}
public static Date afterNDay(int n, Date dt) {
Calendar c = Calendar.getInstance();
c.setTime(dt);
c.add(Calendar.DATE, n);
Date d2 = c.getTime();
return d2;
}
public static Date afterNMinute(int n, Date dt) {
Calendar c = Calendar.getInstance();
c.setTime(dt);
c.add(Calendar.MINUTE, n);
Date d2 = c.getTime();
return d2;
}
public static String formatterDayHourMin(Date startDate, Date endDate) {
long l = endDate.getTime() - startDate.getTime();
long day = l / (24 * 60 * 60 * 1000);
long hour = (l / (60 * 60 * 1000) - day * 24);
long min = ((l / (60 * 1000)) - day * 24 * 60 - hour * 60);
long s = (l / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
return "" + day + "天" + hour + "小时" + min + "分";
}
public static Date StrToDate(String str) {
return StrToDate(str,dateymd);
}
public static Date StrToDateYMDHMS(String str) {
return StrToDate(str,dateymdhms);
}
public static Date StrToDate(String str,SimpleDateFormat formatter) {
Date date = null;
try {
date = formatter.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 字符串转日期
* @param str
* @param pattern 格式化类型 eg:yyyy-MM-dd
* @return
*/
public static Date StrToDate(String str,String pattern) {
SimpleDateFormat formatter = new SimpleDateFormat(pattern);
Date date = null;
try {
date = formatter.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public static boolean isTimeRange(long currTime, String startTime, String endTime) {
try {
Date sdate = hm.parse(startTime);
Date edate = hm.parse(endTime);
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(currTime);
String time = hm.format(cal.getTime());
long curr = hm.parse(time).getTime();
if (curr >= sdate.getTime() && curr <= edate.getTime()) {
return true;
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public static String dateToStringHM(Date date) {
return hm.format(date);
}
public static long getlongDateHM(String dateStr) {
java.util.Date date = null;
if (dateStr == null || dateStr.equals("")) {
return 0;
}
try {
date = hm.parse(dateStr);
return date.getTime();
} catch (Exception ex) {
ex.printStackTrace();
}
return 0;
}
/**
* 获取时间段内周几的日期
*
* @param from
* yyyy-MM-dd
* @param to
* yyyy-MM-dd
* @param weekDate
* Calendar.MONDAY
* @return
*/
public static List<String> getWeekDays(String from, String to, int weekDate) {
Calendar calendar = Calendar.getInstance();
String[] array = { from, to };
Date[] ds = new Date[array.length];
for (int i = 0; i < array.length; i++) {
String[] fs = array[i].split("-");
calendar.set(Integer.parseInt(fs[0]), Integer.parseInt(fs[1]) - 1, Integer.parseInt(fs[2]));
ds[i] = calendar.getTime();
}
List<String> list = new ArrayList<String>();
for (Date x = ds[0]; x.compareTo(ds[1]) <= 0;) {
calendar.setTime(x);
// x = calendar.getTime();
// Calendar.MONDAY
if (calendar.get(Calendar.DAY_OF_WEEK) == weekDate) {
String monday = new SimpleDateFormat("yyyy-MM-dd").format(x);
System.out.println(monday);
list.add(monday);
}
calendar.add(Calendar.DATE, 1);
x = calendar.getTime();
}
return list;
}
/**
* @author cuijinlong
* @param date为完成时间
* @param date1分配时间
* @param date2//充电时间
* @param min//倒计时时间
* @return
*/
public static Long seconds(Date date, Date date1, BigDecimal date2, Integer min) {
// 判断是否超时1分钟以内
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String st1 = timestampToStringHMS(Timestamp.valueOf(sdf.format(date1)));// 分配时间
String st2 = timestampToStringHMS(Timestamp.valueOf(sdf.format(date)));// 完成时间
String[] dates = st1.split(":");
String[] dates1 = st2.split(":");
long seconds = 0L;
long seconds1 = 0L;
long seconds2 = 0L;
if (dates.length == 3) {
seconds += Long.valueOf(dates[0]) * 60 * 60;
seconds += Long.valueOf(dates[1]) * 60;
seconds += Long.valueOf(dates[2]);
}
if (dates1.length == 3) {
seconds1 += Long.valueOf(dates1[0]) * 60 * 60;
seconds1 += Long.valueOf(dates1[1]) * 60;
seconds1 += Long.valueOf(dates1[2]);
}
seconds2 = seconds1 - seconds;
Long daojishi = Long.parseLong(min.toString()) * 60;
Long chongdianshijian = 0L;
if (date2 != null && date2.toString().equals("0.5")) {
chongdianshijian = 1800L;
} else if (date2 != null && date2.toString().equals("1")) {
chongdianshijian = 3600L;
} else if (date2 != null && date2.toString().equals("1.5")) {
chongdianshijian = 5400L;
} else if (date2 != null && date2.toString().equals("2")) {
chongdianshijian = 7200L;
}
if (date2 == null) {// 非充电
if (seconds2 > daojishi) {
return seconds2 - daojishi;
} else {
return null;
}
} else {
if ((seconds2 - chongdianshijian) > daojishi) {
return seconds2 - chongdianshijian - daojishi;
} else {
return null;
}
}
}
public static Long minutes(Date date, Date date1, Long date2) {
long time = date.getTime() - date1.getTime();
time = time / (1000 * 60);
return time = time + date2;
// // 判断是否超时1分钟以内
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// String st1 =
// timestampToStringHMS(Timestamp.valueOf(sdf.format(date1)));// 分配时间
// String st2 =
// timestampToStringHMS(Timestamp.valueOf(sdf.format(date)));// 完成时间
// String[] dates = st1.split(":");
// String[] dates1 = st2.split(":");
// long seconds = 0L;
// long seconds1 = 0L;
// long seconds2 = 0L;
// if (dates.length == 3) {
// seconds += Long.valueOf(dates[0]) * 60 * 60;
// seconds += Long.valueOf(dates[1]) * 60;
// seconds += Long.valueOf(dates[2]);
// }
// if (dates1.length == 3) {
// seconds1 += Long.valueOf(dates1[0]) * 60 * 60;
// seconds1 += Long.valueOf(dates1[1]) * 60;
// seconds1 += Long.valueOf(dates1[2]);
// }
// seconds2 = seconds1 - seconds;
// Long chongdianshijian = date2 * 60;
//
// return (seconds2 + chongdianshijian) / 60;
}
}