javase-Calendar 我不是女神ヾ 2022-02-17 02:17 201阅读 0赞 ### 文章目录 ### * * * 1. 当前时间 * 2. 日期格式化 * 3. 字段 * 4. 对字段的操作 * 5. 常用工具 ### 1. 当前时间 ### Calendar calendar = Calendar.getInstance(); System.out.println(calendar.getTime()); // ==>Thu Apr 18 15:58:05 CST 2019 -------------------- ### 2. 日期格式化 ### Calendar calendar = Calendar.getInstance(); System.out.println(calendar.getTime()); // ==>Thu Apr 18 15:59:53 CST 2019 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); System.out.println(simpleDateFormat.format(calendar.getTime())); // ==>2019-04-18 03:59:53 -------------------- ### 3. 字段 ### 字段总是在大的标准里,讨论当前字段的值。eg:Calendar.MINUTE 它是在当前小时的基础上,讨论现在是几分钟。再比如Calendar.HOUR\_OF\_DAY,讨论的一天中多少小时。 Calendar calendar = Calendar.getInstance(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(simpleDateFormat.format(calendar.getTime())); // ==> 2019-04-18 16:19:43 System.out.println(calendar.get(Calendar.SECOND));// 在当前分钟内的多少秒 // ==> 43 System.out.println(calendar.get(Calendar.MINUTE));// 在当前小时内的多少分钟 // ==> 19 System.out.println(calendar.get(Calendar.HOUR)); // 0点或12点以来的多少小时 12小时制 // ==> 4 System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 0点以来的多少小时 24小时制 // ==> 16 System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); // 当前周中的第几天 1是星期日、2是星期一、3是星期二、4是星期三、5是星期四、6是星期五、7是星期六 // ==> 5 System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); // 当前月中的第几天 // ==> 18 System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); // 当前年中的第几天 // ==> 108 System.out.println(calendar.get(Calendar.WEEK_OF_MONTH)); // 当前月中的第几个星期 // ==> 3 System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 当前年中的第几个星期 // ==> 16 System.out.println(calendar.get(Calendar.MONTH)); // 当前年中的第几个月 1月是0 12月是11 // ==> 3 System.out.println(calendar.get(Calendar.YEAR)); // 年份 // ==> 2019 -------------------- ### 4. 对字段的操作 ### * get(字段) 获取字段值 * set(字段,value) 设置字段的具体值 * add(字段,数字) 对字段增加(负数减少)值,自动调整比当前字段大一级的字段,比如月份上一级是年 * roll(字段,数字) 对字段增加(负数减少)值,不自动调整比当前字段大一级的字段,比如月份上一级是年 Calendar calendar = Calendar.getInstance(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(simpleDateFormat.format(calendar.getTime())); // ==> 2019-04-18 16:42:03 System.out.println(calendar.get(Calendar.MONTH)); // ==> 3 calendar.add(Calendar.MONTH, 1);// 月份加1 System.out.println(simpleDateFormat.format(calendar.getTime())); // ==> 2019-05-18 16:42:03 calendar.roll(Calendar.MONTH, 1);//月份加1 System.out.println(simpleDateFormat.format(calendar.getTime())); // ==> 2019-06-18 16:42:03 add()与roll()的区别在于,会不会自动更新上级字段。 Calendar calendar = Calendar.getInstance(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); calendar.set(Calendar.DAY_OF_MONTH, 1); System.out.println(simpleDateFormat.format(calendar.getTime())); // ==> 2019-04-01 16:47:01 calendar.add(Calendar.DAY_OF_MONTH, -1);// 天数-1 System.out.println(simpleDateFormat.format(calendar.getTime())); // ==> 2019-03-31 16:47:01 // 更改了上级字段月份,使其正确 Calendar calendar = Calendar.getInstance(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); calendar.set(Calendar.DAY_OF_MONTH, 1); System.out.println(simpleDateFormat.format(calendar.getTime())); // ==> 2019-04-01 16:47:01 calendar.roll(Calendar.DAY_OF_MONTH, -1);// 天数-1 System.out.println(simpleDateFormat.format(calendar.getTime())); // ==> 2019-04-30 16:47:01 // 没有更改上级字段,在一个月内滚动 ### 5. 常用工具 ### public class DateUtil { /** * 类型 */ public enum Type { second(0), minute(1), hour(2), day(3), month(4), year(5); private Integer index; Type(Integer index) { this.index = index; } } /** * 日期格式 */ public class Pattern { public static final String yyyy_MM_dd_hh_mm_ss = "yyyy-MM-dd hh:mm:ss"; public static final String yyyy_MM_dd_hh_mm = "yyyy-MM-dd hh:mm"; public static final String yyyy_MM_dd_hh = "yyyy-MM-dd hh"; public static final String yyyy_MM_dd = "yyyy-MM-dd"; public static final String yyyy_MM = "yyyy-MM"; public static final String yyyy = "yyyy"; } /** * 日期格式字符串转为日期对象 * * @param dateStr 日期字符串 eg:2019-04-17 16:13:45 * @param pattern 日期模式 eg:yyyy-MM-dd hh:mm:ss * @return */ public static Date StringToDate(String dateStr, String pattern) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); try { return simpleDateFormat.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); return null; } } /** * 字符串转为日期对象 * * @param date 日期 * @param pattern 日期模式 eg:yyyy-MM-dd hh:mm:ss * @return */ public static String dateToString(Date date, String pattern) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); return simpleDateFormat.format(date); } /** * 获取 * * @param n 间隔 * @param type 类型 * @return */ public static Date getAssignDate(int n, Type type) { Calendar calendar = Calendar.getInstance(); if (type == Type.second) { calendar.add(Calendar.SECOND, n); } else if (type == Type.minute) { calendar.add(Calendar.MINUTE, n); } else if (type == Type.hour) { calendar.add(Calendar.HOUR_OF_DAY, n); } else if (type == Type.day) { calendar.add(Calendar.DATE, n); } else if (type == Type.month) { calendar.add(Calendar.MONTH, n); } else if (type == Type.year) { calendar.add(Calendar.YEAR, n); } return calendar.getTime(); } /** * 获取 * * @param n 间隔 * @param type 类型 * @param pattern 格式 * @return */ public static String getAssignDate(int n, Type type, String pattern) { return dateToString(getAssignDate(n, type), pattern); } /** * 计算日期间隔 * * @param date1 时间1 * @param date2 时间2 * @param type 间隔类型 * @return */ public static long dateDiff(Date date1, Date date2, Type type) { long timeDiff = Math.abs(date1.getTime() - date2.getTime()); long result = 0; if (type == Type.second) { result = timeDiff / 1000; } else if (type == Type.minute) { result = timeDiff / (1000 * 60); } else if (type == Type.hour) { result = timeDiff / (1000 * 60 * 60); } else if (type == Type.day) { result = timeDiff / (1000 * 60 * 60 * 24); } return result; } /** * 获取当前月中指定的那天 * * @param n n为一个月中指定的那天 -1为最后一天 * @return */ public static Date getSpecialDayOfCurMonth(int n) { Calendar calendar = Calendar.getInstance(); if (n >= 0) { calendar.set(Calendar.DAY_OF_MONTH, n); } else if (n == -1) { calendar.add(Calendar.MONTH, 1); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.add(Calendar.DAY_OF_MONTH, -1); } return calendar.getTime(); } }
还没有评论,来说两句吧...