package cn.timer.api.controller.xcgl; import java.text.DecimalFormat; import java.text.ParseException; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class SalaryTool { static SimpleDateFormat mat = new SimpleDateFormat("yyyy-MM-dd"); static SimpleDateFormat matM = new SimpleDateFormat("yyyy-MM"); public static String SlashDate(String Slashdate) { SimpleDateFormat sdf=new SimpleDateFormat("MM/dd/yyyy"); Date d = null; try{ d=sdf.parse(Slashdate); sdf.applyPattern("yyyy-MM-dd"); // System.out.println(sdf.format(d)); } catch(Exception exe){ exe.printStackTrace(); } return sdf.format(d); } /** * 保留两位小数,四舍五入的一个老土的方法 * @param d * @return */ public static double formatDouble(double d) { return (double)Math.round(d*10000)/10000; } public static double formatDouble_(double d) { double zhi = 0; DecimalFormat df = new DecimalFormat("0.00"); zhi = Double.valueOf(df.format(d)); return zhi; } /** * 获取两个日期相差的月数 * @param d2 较大的日期 * @param d1 较小的日期 * @return 如果d1>d2返回 月数差 否则返回0 */ public static int getMonthDiff(String d1, String d2)throws ParseException { Calendar c1 = Calendar.getInstance(); Calendar c2 = Calendar.getInstance(); //将String日期转换成date SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date1=sdf.parse(d1); java.util.Date date2=sdf.parse(d2); c1.setTime(date1); c2.setTime(date2); //判断两个日期的大小 if(c2.getTimeInMillis() < c1.getTimeInMillis()) return 0; int year1 = c1.get(Calendar.YEAR); int year2 = c2.get(Calendar.YEAR); int month1 = c1.get(Calendar.MONTH); int month2 = c2.get(Calendar.MONTH); int day1 = c1.get(Calendar.DAY_OF_MONTH); int day2 = c2.get(Calendar.DAY_OF_MONTH); // 获取年的差值 假设 d1 = 2015-9-30 d2 = 2015-12-16 int yearInterval = year2 - year1; // 如果 d1的 月-日 小于 d2的 月-日 那么 yearInterval-- 这样就得到了相差的年数 if(month2 < month1 || month1 == month2 && day2 < day1) yearInterval --; // 获取月数差值 int monthInterval = (month2 + 12) - month1 ; if(day2 > day1) monthInterval ++; monthInterval %= 12; return yearInterval * 12 + monthInterval + 1; } public static Date strToDateLong(String strDate) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ParsePosition pos = new ParsePosition(0); Date strtodate = formatter.parse(strDate, pos); return strtodate; } // 上个月 public static String getfirstlastTwo(String time) { String firstnext; Calendar c1 = Calendar.getInstance(); c1.setTime(strToDateLong(time)); // 设置为当前时间 c1.add(Calendar.MONTH, -1); c1.set(Calendar.DAY_OF_MONTH, 1); firstnext = mat.format(c1.getTime()); return firstnext; } public static String getlastlastTwo(String time) { String lastnext; Calendar ca1 = Calendar.getInstance(); ca1.setTime(strToDateLong(time)); // 设置为当前时间 ca1.add(Calendar.MONTH, -1); ca1.set(Calendar.DAY_OF_MONTH, ca1.getActualMaximum(Calendar.DAY_OF_MONTH)); lastnext = mat.format(ca1.getTime()); return lastnext; } // 本月 public static String getfirstnowTwo(String time) { String firstnow; Calendar c = Calendar.getInstance(); c.setTime(strToDateLong(time)); // 设置为当前时间 c.add(Calendar.MONTH, 0); c.set(Calendar.DAY_OF_MONTH, 1); firstnow = mat.format(c.getTime()); return firstnow; } public static String getlastnowTwo(String time) { String lastnow; Calendar ca = Calendar.getInstance(); ca.setTime(strToDateLong(time)); // 设置为当前时间 ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH)); lastnow = mat.format(ca.getTime()); return lastnow; } // 下个月 public static String getfirstnextTwo(String time) { String firstnext; Calendar c1 = Calendar.getInstance(); c1.setTime(strToDateLong(time)); // 设置为当前时间 c1.add(Calendar.MONTH, 1); c1.set(Calendar.DAY_OF_MONTH, 1); firstnext = mat.format(c1.getTime()); return firstnext; } public static String getlastnextTwo(String time) { String lastnext; Calendar ca1 = Calendar.getInstance(); ca1.setTime(strToDateLong(time)); // 设置为当前时间 ca1.add(Calendar.MONTH, 1); ca1.set(Calendar.DAY_OF_MONTH, ca1.getActualMaximum(Calendar.DAY_OF_MONTH)); lastnext = mat.format(ca1.getTime()); return lastnext; } /** * 根据 年、月 获取对应的月份 的 天数 */ 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(mat.parse(date)); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); return mat.format(calendar.getTime()); } /** * 获取月份最后日期 * * @param date * @return * @throws ParseException */ public static String getMaxMonthDate(String date) throws ParseException { Calendar calendar = Calendar.getInstance(); calendar.setTime(mat.parse(date)); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); return mat.format(calendar.getTime()); } // 下个月 public static String getfirstnextMo(String time) { String firstnext; Calendar c1 = Calendar.getInstance(); c1.setTime(strToDateLong(time)); // 设置为当前时间 c1.add(Calendar.MONTH, 1); c1.set(Calendar.DAY_OF_MONTH, 1); firstnext = matM.format(c1.getTime()); return firstnext; } // 上个月 public static String getfirstlastMo(String time) { String firstnext; Calendar c1 = Calendar.getInstance(); c1.setTime(strToDateLong(time)); // 设置为当前时间 c1.add(Calendar.MONTH, -1); c1.set(Calendar.DAY_OF_MONTH, 1); firstnext = matM.format(c1.getTime()); return firstnext; } //################################################################################################################################## // 上个月 public static String getfirstlast() { String firstnext; Calendar c1 = Calendar.getInstance(); c1.add(Calendar.MONTH, -1); c1.set(Calendar.DAY_OF_MONTH, 1); firstnext = mat.format(c1.getTime()); return firstnext; } public static String getlastlast() { String lastnext; Calendar ca1 = Calendar.getInstance(); ca1.add(Calendar.MONTH, -1); ca1.set(Calendar.DAY_OF_MONTH, ca1.getActualMaximum(Calendar.DAY_OF_MONTH)); lastnext = mat.format(ca1.getTime()); return lastnext; } // 本月 public static String getfirstnow() { String firstnow; Calendar c = Calendar.getInstance(); c.add(Calendar.MONTH, 0); c.set(Calendar.DAY_OF_MONTH, 1); firstnow = mat.format(c.getTime()); return firstnow; } public static String getlastnow() { String lastnow; Calendar ca = Calendar.getInstance(); ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH)); lastnow = mat.format(ca.getTime()); return lastnow; } // 下个月 public static String getfirstnext() { String firstnext; Calendar c1 = Calendar.getInstance(); c1.add(Calendar.MONTH, 1); c1.set(Calendar.DAY_OF_MONTH, 1); firstnext = mat.format(c1.getTime()); return firstnext; } public static String getlastnext() { String lastnext; Calendar ca1 = Calendar.getInstance(); ca1.add(Calendar.MONTH, 1); ca1.set(Calendar.DAY_OF_MONTH, ca1.getActualMaximum(Calendar.DAY_OF_MONTH)); lastnext = mat.format(ca1.getTime()); return lastnext; } }