本文共 6035 字,大约阅读时间需要 20 分钟。
第一部分 jdk8前日期时间工具使用总结
1、Date基本操作
@Test public void test0() { Date date = new Date(); // 当前时间 long time = date.getTime(); System.out.println(time); // 1610200422658 --- 1970开始的毫秒 date = new Date(1610200422658l); // 用时间戳构造Date }
2、时间格式化字符串
@Test public void test1(){ System.out.println(Main_date.format(new Date(), "yyyy-MM-dd HH:mm:ss")); //格式: yyyy-MM-dd HH:mm:ss System.out.println(Main_date.format(new Date(), "yyyy-MM-dd")); //格式: yyyy-MM-dd HH:mm:ss } public static String format(Date date, String format) { SimpleDateFormat formatter = new SimpleDateFormat(format); String dateString = formatter.format(date); return dateString; }
3、字符串解析成时间
@Test public void test2() throws ParseException{ System.out.println(Main_date.parseDate("2017-01-10 23:53:53","yyyy-MM-dd HH:mm:ss")); //格式: yyyy-MM-dd HH:mm:ss System.out.println(Main_date.parseDate("2017-01-10","yyyy-MM-dd")); //格式: yyyy-MM-dd HH:mm:ss } public static Date parseDate(String date,String format) throws ParseException { SimpleDateFormat formatter = new SimpleDateFormat(format); Date dateString = formatter.parse(date); return dateString; }
4、Calendar的基本操作
* 基本方法:
* setTime() 设置时间 * add(unit,index) 增加指定单位的时间 * get(unit) 得到指定单位的时间 * 单位参数unit: * Calendar.YEAR 年 * Calendar.MONTH 月 * Calendar.DAY_OF_WEEK 本周的天数 * Calendar.DAY_OF_YEAR 本年的天数 * Calendar.DAY_OF_MONTH 本月的天数 * Calendar.HOUR_OF_DAY 当天的时间 * 注意点: * month 从 0 开始,也就是全年 12 个月由 0 ~ 11 进行表示。。 * week 从1开始,星期日是1,星期一是2,依次。。 (js是从0,即星期日是0,星期一是1。)@Test public void test3() { Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); calendar.add(Calendar.YEAR, 1); String res = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()); System.out.println(res); }
5、Calendar的综合演示
@Test public void test4() throws ParseException { // 创建 Calendar 对象 Calendar calendar = Calendar.getInstance(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-M-d HH:mm:ss"); Date date = dateFormat.parse("2018-4-22 13:24:16"); // date = new Date(); calendar.setTime(date); // 显示年份 int year = calendar.get(Calendar.YEAR); System.out.println("year is = " + String.valueOf(year)); // 显示月份 (从0开始, 实际显示要加一) int month = calendar.get(Calendar.MONTH); System.out.println("nth is = " + (month + 1)); // 本周几 int week = calendar.get(Calendar.DAY_OF_WEEK); System.out.println("week is = " + week); // 今年的第 N 天 int DAY_OF_YEAR = calendar.get(Calendar.DAY_OF_YEAR); System.out.println("DAY_OF_YEAR is = " + DAY_OF_YEAR); // 本月第 N 天 int DAY_OF_MONTH = calendar.get(Calendar.DAY_OF_MONTH); System.out.println("DAY_OF_MONTH = " + String.valueOf(DAY_OF_MONTH)); // 3小时以后 calendar.add(Calendar.HOUR_OF_DAY, 3); int HOUR_OF_DAY = calendar.get(Calendar.HOUR_OF_DAY); System.out.println("HOUR_OF_DAY + 3 = " + HOUR_OF_DAY); }
第二部分 jdk8日期时间工具使用总结
* 概述:新增java.time包下的LocalDateTime、LocalDate、LocalTime
* LocalDate 表示本地日期,无时间,不带时区信息 * LocalTime 表示本地时间, 无日期,不带时区信息 * LocalDateTime 表示本地时间和日期,不带时区信息 * LocalDate和LocalTime实例能够构建LocalDateTime实例,反之LocalDateTime能获取另外2个实例1、基本Api
* 创建时间对象和获取的操作
* now() 创建当前时间 * of() 创建指定时间 * getYear() 得到年 * getMonthValue() 得到月 * getDayOfMonth() 月份天数 * ... * toLocalDate():将LocalDateTime转换为相应的LocalDate对象 * toLocalTime():将LocalDateTime转换为相应的LocalTime对象public void test() { LocalDateTime now = LocalDateTime.now(); System.out.println("完整时间:" + now); // 2021-01-09T22:27:31.573 LocalDate localDate = now.toLocalDate(); LocalTime localTime = now.toLocalTime(); System.out.println("当前日期:" + localDate); // 2021-01-09 System.out.println("当前时间:" + localTime); // 22:27:31.573 Month month = now.getMonth(); System.out.println(month.getValue()); // 1 注意:月在新的api已经加了1 System.out.println(now.getDayOfMonth()); // 9 当前月的天数 System.out.println(now.getSecond()); // 24 当前秒 LocalDateTime date2 = now.withDayOfMonth(10).withYear(2012); //改成当前月+10天,和2012年 System.out.println(date2); //2012-03-10T15:57:09.821 LocalDate date3 = LocalDate.of(2014, Month.DECEMBER, 12); System.out.println(date3); //2014-12-12 LocalTime date4 = LocalTime.of(22, 15); System.out.println(date4); //22:15 System.out.println(LocalTime.parse("20:15:30")); //20:15:30 }
2、判断相关Api
* isBefore() 是否参数前
* isAfter() 是否参数后 * equals() 是否相等@Test public void test1() { LocalDate now = LocalDate.now(); LocalDate of = LocalDate.of(2021, 1, 19); boolean before = of.isBefore(now); System.out.println(before); // false boolean after = of.isAfter(now); System.out.println(after); // true boolean after1 = now.equals(of); System.out.println(after1); // false }
3、日期增减Api
* plusYears() 年增加
* plusMonths() 月增加 * ... * minusYears() 年减少 * ...@Test public void test2() { LocalDateTime now = LocalDateTime.now(); System.out.println(now); //可以给当前的日期增加时间量 LocalDateTime newDate = now.plusYears(1); System.out.println(newDate.getYear()); LocalDate now1 = LocalDate.now(); System.out.println(now1); LocalDate newDate2 = now1.minusDays(10); int dayOfMonth = newDate2.getDayOfMonth(); System.out.println(dayOfMonth); }
4、指定年月日时分秒的方法
* with(TemporalAdjuster adjuster):指定特殊时间
* withYear(int year):指定年 * withDayOfYear(int dayOfYear):指定日 * withMonth(int month):指定月 * withDayOfMonth(int dayOfMonth):指定日public void test3() { //指定某个日期的方法 with()方法 LocalDate now2 = LocalDate.now(); System.out.println(now2); LocalDate localDate = now2.withYear(2014); System.out.println(localDate); // TemporalAdjusters工具类,提供了一些获取特殊日期的方法 LocalDate with = now2.with(TemporalAdjusters.firstDayOfMonth()); System.out.println(with); LocalDate with1 = now2.with(TemporalAdjusters.firstDayOfNextMonth()); System.out.println(with1); }
/**
* 5、格式化和解析 * format(DateTimeFormatter ) // 格式化日期 * parse(dateStr, DateTimeFormatter) // 从日期字符串解析成指定格式。 */ @Test public void test4() { String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); System.out.println(format); LocalDate parse = LocalDate.parse("2017-01-10",DateTimeFormatter.ofPattern("yyyy-MM-dd")); System.out.println(parse); }转载地址:http://yeuni.baihongyu.com/