Java 日期时间API


JDK8之前的日期时间API

  1. 获取系统当前时间:System类中的currentTimeMillis()

    long time = System.currentTimeMillis();
    //返回当前时间与1970年1月1日0时0秒之间以毫秒为单位的时间差
    //称为时间戳
    System.out.println(time);
  2. java.util.Date类与子类java.sql.Date类

  3. ppt

    /**
     * SimpleDateFormat的使用:对日期Date类的格式化和解析
     * 1.两个操作
     *  1.1格式化:日期 ---》字符串
     *  1.2解析:格式化的逆过程
     * 2.SimpleDateFormat的实例化
     */
 @Test
   public void testSimpleDateFormat() throws ParseException {
        //SimpleDateFormat的实例化:使用默认的构造器
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat();

        //格式化:日期 ---》字符串
        Date date = new Date();
//      System.out.println(date);
        String format = simpleDateFormat.format(date);//格式化,中文格式
        System.out.println(format);//20-10-23 下午8:26

        //解析:
        String str = "20-10-23 下午7:54";
        Date date1 = simpleDateFormat.parse(str);
        System.out.println(date1);//20-10-23 下午8:26

        //按照指定的方式格式化和解析,调用带参的构造器
//        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyyy.MMMMM.dd GGG hh:mm aaa");
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        //格式化
        String format1 = simpleDateFormat1.format(date);//20-10-23 08:26 下午
        System.out.println(format1);//2020-10-23 08:39:54
        //解析:要求字符串必须是符合SimpleDateFormat识别的格式(通过构造器参数体现)
        Date date2 = simpleDateFormat1.parse("2020-02-18 11:48:27");
        System.out.println(date2);//Tue Feb 18 11:48:27 CST 2020
    }
  1. Calendar
* Calendar日历类(抽象类)的使用
     *
     */
    @Test
    public void testCalendar(){
        //1.实例化
        //方式一:创建其子类(GregorianCalendar)的对象
        //方式二:调用其静态方法getInstance()
        Calendar calendar = Calendar.getInstance();
//        System.out.println(calendar.getClass());

        //2.常用方法
        //get()
        int days = calendar.get(Calendar.DAY_OF_MONTH);//这个月的第几天
        System.out.println(days);
        System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//这一年的第几天
        //set()
        calendar.set(Calendar.DAY_OF_MONTH,22);
        days = calendar.get(Calendar.DAY_OF_MONTH);//这个月的第几天
        System.out.println(days);//22
        //add()
        calendar.add(Calendar.DAY_OF_MONTH,3);
        days = calendar.get(Calendar.DAY_OF_MONTH);//这个月的第几天
        System.out.println(days);//25
        //getTime():日历类--->Date
        Date date = calendar.getTime();
        System.out.println(date);
        //setTime():Date---》日历类
        Date date1 = new Date();
        calendar.setTime(date1);
        days = calendar.get(Calendar.DAY_OF_MONTH);//这个月的第几天
        System.out.println(days);
    }

JDK8中的日期时间API

新时间日期API新时间日期API

java.time-包含值对象的基础包 java.time.chrono-提供对不同的日历系统的访问 java.time.format-格式化和解析时间和日期 java.time.temporal-包括底层框架和扩展特性 java.time.zone-包含时区支持的类 说明:大多数开发者只会用到基础包和format包,也可能会用到temporal包。因此,尽管有68个新的公开类型,大多数开发者,大概将只会用到其中的三分之一。

  1. LocalDate、LocalTime、LocalDateTime LocalDate、LocalTime、LocalDateTime类是其中较重要的几个类,它们的实例是不可变的对象,分别表示使用1$0-8601日历系统的日期、时间、日期和时间。它们提供了简单的本地日期或时间,并不包含当前的时间信息,也不包含与时区相关的信息。
    • LocalDate代表OS格式(yyyy-MM-dd)的日期,可以存储生日、纪念日等日期。
    • LocalTime表示一个时间,而不是日期。
    • LocalDateTime是用来表示日期和时间的,这是一个最常用的类之一。

/**
* LocalDate、LocalTime、LocalDateTime的使用
* 说明:1.LocalDateTime相较于LocalDate、LocalTime,使用频率要高
*      2.类似于Calendar,但Local...不可变
*/
@Test
public void test1(){
    //now():获取当前的日期、时间、日期+时间
    LocalDate localDate = LocalDate.now();
    LocalTime localTime = LocalTime.now();
    LocalDateTime localDateTime = LocalDateTime.now();

    System.out.println(localDate);//2020-10-23
    System.out.println(localTime);//23:06:44.226
    System.out.println(localDateTime);//2020-10-23T23:06:44.226

    //of():设置指定的年月日时分秒是没有偏移量的
    LocalDateTime localDateTime1 = LocalDateTime.of(2020, 10, 6, 13, 23, 43);
    System.out.println(localDateTime1);

    //getXxx()
    System.out.println(localDateTime.getDayOfMonth());
    System.out.println(localDateTime.getDayOfWeek());
    System.out.println(localDateTime.getMonth());
    System.out.println(localDateTime.getMonthValue());
    System.out.println(localDateTime.getMinute());

    //体现localDate等的不可变性
    LocalDate localDate1 = localDate.withDayOfMonth(22);
    System.out.println(localDate);
    System.out.println(localDate1);

    LocalDateTime localDateTime2 = localDateTime.withHour(4);
    System.out.println(localDateTime);
    System.out.println(localDateTime2);

    //加减
    LocalDateTime localDateTime3 = localDateTime.plusMonths(3);
    System.out.println(localDateTime3);

    LocalDateTime localDateTime4 = localDateTime.minusDays(6);
    System.out.println(localDateTime4);

}

(未完待续)


Author: qwq小小舒
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source qwq小小舒 !
  TOC