package cn.timer.api.controller.kqgl; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Set; /** * @author Yl123 2020-05-11 * */ public class ClockInTool { static SimpleDateFormat famt = new SimpleDateFormat("yyyy-MM-dd"); /** * 使用java正则表达式去掉多余的.与0 * @param s * @return string */ public static String replace(String s){ if(null != s && s.indexOf(".") > 0){ s = s.replaceAll("0+?$", "");//去掉多余的0 s = s.replaceAll("[.]$", "");//如最后一位是.则去掉 } return s; } /** * 根据 年、月 获取对应的月份 的 天数 */ public static int getDaysByYearMonth(int year, int month) { Calendar a = Calendar.getInstance(); a.set(Calendar.YEAR, year); a.set(Calendar.MONTH, month - 1); a.set(Calendar.DATE, 1); a.roll(Calendar.DATE, -1); int maxDate = a.get(Calendar.DATE); return maxDate; } /** * 获取月份起始日期 * * @param date * @return * @throws ParseException */ public static String getMinMonthDate(String date) throws ParseException { Calendar calendar = Calendar.getInstance(); calendar.setTime(famt.parse(date)); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); return famt.format(calendar.getTime()); } /** * 获取月份最后日期 * * @param date * @return * @throws ParseException */ public static String getMaxMonthDate(String date) throws ParseException { Calendar calendar = Calendar.getInstance(); calendar.setTime(famt.parse(date)); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); return famt.format(calendar.getTime()); } /** * 对比两个字符串数组 * @param t1 * @param t2 * @return */ public static <T> List<T> compare(T[] t1, T[] t2) { List<T> list1 = Arrays.asList(t1); //将t1数组转成list数组 List<T> list2 = new ArrayList<T>();//用来存放2个数组中不相同的元素 for (T t : t2) { if (!list1.contains(t)) { list2.add(t); } } return list2; } public static String[] array_unique(String[] ss) { Set<String> set=new HashSet<String>(Arrays.asList(ss)); return set.toArray(new String[set.size()]); //或者return new HashSet<String>(Arrays.asList(ss)).toArray(new String[0]); } public static byte[] CreateBSCommBufferFromString(String sCmdParam,byte[] bytCmd) { try{ if (sCmdParam.length() == 0){ return bytCmd; } byte[] bytText = sCmdParam.getBytes("UTF-8"); byte[] bytTextLen = int2byte(bytText.length + 1); bytCmd=new byte[4 + bytText.length + 1]; System.arraycopy(bytTextLen,0,bytCmd,0,bytTextLen.length); System.arraycopy(bytText,0,bytCmd,4,bytText.length); bytCmd[4 + bytText.length] = 0; return bytCmd; }catch(Exception e){ e.printStackTrace(); bytCmd=new byte[0]; return bytCmd; } } public static byte[] int2byte(int res) { byte[] targets = new byte[4]; targets[0] = (byte) (res & 0xff); targets[1] = (byte) ((res >> 8) & 0xff); targets[2] = (byte) ((res >> 16) & 0xff); targets[3] = (byte) (res >>> 24); return targets; } public static byte[] ConcateByteArray(byte[] abytDest, byte[] abytSrc) { int len_dest = abytDest.length + abytSrc.length; if (abytSrc.length == 0) return abytDest; byte[] bytTmp = new byte[len_dest]; System.arraycopy(abytDest, 0, bytTmp, 0, abytDest.length); System.arraycopy(abytSrc, 0, bytTmp, abytDest.length, abytSrc.length); return bytTmp; } public static String dateToWeek2(String datetime) { SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd"); String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; // String[] weekDays = {"7", "1", "2", "3", "4", "5", "6"}; Calendar cal = Calendar.getInstance(); Date date; try { date = f.parse(datetime); cal.setTime(date); } catch (ParseException e) { e.printStackTrace(); } // 一周的第几天 int w = cal.get(Calendar.DAY_OF_WEEK) - 1; if (w < 0) w = 0; return weekDays[w]; } /** * * @param nowDate 要比较的时间 * @param startDate 开始时间 * @param endDate 结束时间 * @return true在时间段内,false不在时间段内 * @throws Exception */ public static boolean hourMinuteBetween(String nowDate, String startDate, String endDate) throws Exception { SimpleDateFormat format = new SimpleDateFormat("HH:mm"); Date now = format.parse(nowDate); Date start = format.parse(startDate); Date end = format.parse(endDate); long nowTime = now.getTime(); long startTime = start.getTime(); long endTime = end.getTime(); return nowTime >= startTime && nowTime <= endTime; } /** * 根据日期获取 星期 (2019-05-06 ——> 星期一) * * @param datetime * @return */ public static String dateToWeek(String datetime) { SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd"); // String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; String[] weekDays = { "7", "1", "2", "3", "4", "5", "6" }; Calendar cal = Calendar.getInstance(); Date date; try { date = f.parse(datetime); cal.setTime(date); } catch (ParseException e) { e.printStackTrace(); } // 一周的第几天 int w = cal.get(Calendar.DAY_OF_WEEK) - 1; if (w < 0) w = 0; return weekDays[w]; } /** * 2019-10-24T00:30:23.000Z 转化时间 */ public static String dealDateFormat(String oldDateStr, int num) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); // yyyy-MM-dd'T'HH:mm:ss.SSSZ Date date = null; try { date = df.parse(oldDateStr); } catch (ParseException e) { e.printStackTrace(); } SimpleDateFormat df1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.UK); Date date1 = null; try { date1 = df1.parse(date.toString()); } catch (ParseException e) { e.printStackTrace(); } DateFormat df2 = null; if (num == 1) { df2 = new SimpleDateFormat("yyyy-MM-dd' 'HH:mm:ss"); } else if (num == 2) { df2 = new SimpleDateFormat("HH:mm"); } return df2.format(date1); } /** * 时间转换时间戳 */ public static String dateToStamp(String s) { String res; SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = null; try { date = simpleDateFormat.parse(s); } catch (ParseException e) { e.printStackTrace(); } long ts = date.getTime(); res = String.valueOf(ts); return res; } }