/** * 判断一个日期为第几周,以周一为第一天 * @param dateA * @param format * @return * @throws Exception */ public static int dateInWeek(String dateA, String format) throws Exception { SimpleDateFormat dateFormatter = new SimpleDateFormat(format); Date dateB = dateFormatter.parse(dateA); Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setMinimalDaysInFirstWeek(4); c.setTime(dateB); return c.get(Calendar.WEEK_OF_YEAR); } /** * @author 101010114 * @date: 2020/01/19 * @description date2比date1多的天数 * @param dateStr1 时间日期 * @param dateStr2 时间日期 * @return differentDays 相差天数 */ public static long differentDays(String dateStr1, String dateStr2) { long differentDays = 0; SimpleDateFormat sdf = new SimpleDateFormat(DatePattern.PURE_DATE_PATTERN); try { Date date1 = sdf.parse(dateStr1); Date date2 = sdf.parse(dateStr2); differentDays = (date1.getTime() - date2.getTime()) / (60 * 60 * 24 * 1000); } catch (ParseException e) { e.printStackTrace(); } return Math.abs(differentDays); } /** * 得出一个日期的周中日期 * @param dateA * @param format * @return * @throws Exception */ public static String dateWeek(String dateA,String format){ SimpleDateFormat dateFormatter = new SimpleDateFormat(format); //得到年 Date dateB= null; try { dateB = dateFormatter.parse(dateA); } catch (ParseException e) { e.printStackTrace(); } Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setMinimalDaysInFirstWeek(4); c.setTime(dateB); int year=c.get(Calendar.YEAR); int month=c.get(Calendar.WEEK_OF_YEAR); return String.valueOf(year)+ ObjUtil.leftAddZero(String.valueOf(month),2); } //判断字符串是否为日期格式 public static boolean isDateFormat(String str){ Pattern pattern = Pattern.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))"); Matcher isNum = pattern.matcher(str); if( !isNum.matches() ){ return false; } return true; } /** * 获取日期对应的年周 * @param dateA 日期 * @param format 日期对应的格式 * @return yyyyww 年周 */ public static String sonyDateWeek(String dateA,String format){ SimpleDateFormat dateFormatter = new SimpleDateFormat(format); //得到年 Date dateB= null; try { dateB = dateFormatter.parse(dateA); } catch (ParseException e) { e.printStackTrace(); } Calendar c = new GregorianCalendar(); c.setMinimalDaysInFirstWeek(4); c.setFirstDayOfWeek(Calendar.MONDAY); c.setTime(dateB); int year=c.get(Calendar.YEAR); int week=c.get(Calendar.WEEK_OF_YEAR); // 获取当前年份的第一天 格式为yyyyMMdd String firstDayOfYear = year +"0101"; int weekIndex = dateToWeek(firstDayOfYear,"yyyyMMdd"); // 获取当年的第一个周一的日期 int plusDays = 7 - weekIndex + 1; String firstMonday = getNNextDate(firstDayOfYear,"yyyyMMdd",plusDays,format); if(dateA.compareTo(firstMonday)<0){ year--; } return String.valueOf(year)+ ObjUtil.leftAddZero(String.valueOf(week),2); } /** * 日期获取星期几 * @param datetime 日期 * @param format 日期格式 * @return 星期日:0,星期一:1,星期二:2,以此类推,星期六:6 */ public static int dateToWeek(String datetime,String format) { SimpleDateFormat f = new SimpleDateFormat(format); Calendar cal = Calendar.getInstance(); try { Date datet = f.parse(datetime); cal.setTime(datet); } catch (ParseException e) { e.printStackTrace(); } return (cal.get(Calendar.DAY_OF_WEEK)-1); }
常用时间工具类
最新推荐文章于 2023-06-13 18:13:32 发布