第十三天下(日期Data,SimpleDateFormat,LocalDateTime,计算年月日Period,计算时分秒Duration,异常两种处理方式,Throwable,自定义异常)

Posted 下雨烨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十三天下(日期Data,SimpleDateFormat,LocalDateTime,计算年月日Period,计算时分秒Duration,异常两种处理方式,Throwable,自定义异常)相关的知识,希望对你有一定的参考价值。

目录

日期类

Data类

Date类常用方法

SimpleDateFormat概述

SimpleDateFormat的 构造方法

SimpleDateFormat 格式化和解析日期

LocalDateTime概述

LocalDateTime获取方法

LocalDateTime转换法

LocalDateTime格式化和解析

LocalDateTime增加或者减少时间的方法

​编辑

LocalDateTime时间修改方法

Period

Duration

​编辑

JDK8时间小结

异常

JVM默认处理方案

异常处理方式

throws

抛出异常对象---throw

throws和throw的区别

抛出处理异常的意义

异常处理方式----try...catch....

Throwable的成员方法

两种处理方式的小结

自定义异常


日期类

Data类

    //显示当前电脑时间
        Date date1 = new Date();
        System.out.println(date1);
        //从计算机时间原点开始,过了指定毫秒的哪个时间
        Date date2 = new Date(0L);
        System.out.println(date2);//从时间原点开始,过了0毫秒

Date类常用方法

public static void main(String[] args) 
   // method1();
    //设置时间,传递毫秒值
    Date date2 = new Date();
    date2.setTime(0L);
    System.out.println(date2);


private static void method1() 
    //把当前时间封装成一个date对象
    Date date1 = new Date();
    //获取这个date对象的毫秒值,也就是获取当前时间的毫秒值
    long time = date1.getTime();
    System.out.println(time);

 

SimpleDateFormat概述

JDK

SimpleDateFormat可以对Date对象,进行格式化和解析。

常用的模式字母及对应关系

y 年

M 月

d 日

H 时

m 分

s 秒

SimpleDateFormat的 构造方法

SimpleDateFormat 格式化和解析日期

1.格式化(从date到String) public final String format(Date date):将日期格式化成日期/时间字符串。

2.解析(从String到Date) public Date parse(String source):从给定字符串的开始解析文本以生成日期

//格式化  
//当前时间的date对象
        Date date = new Date();
        //创建了一个日期格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String result1 = sdf.format(date);
        System.out.println(result1);//2022年10月22日 16:50:48
//解析
        String s="2022年10月22日 16:50:48";
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        Date date2 = sdf1.parse(s);
        System.out.println(date2);//Sat Oct 22 16:50:48 CST 2022

LocalDateTime概述

   public static void main(String[] args) 
       //获取当前系统时间
        LocalDateTime now = LocalDateTime.now();
        System.out.println(now);

        LocalDateTime of = LocalDateTime.of(2020, 11, 11, 11, 11, 11);
        System.out.println(of);
    

LocalDateTime获取方法

 LocalDateTime of = LocalDateTime.of(2020, 11, 11, 11, 11, 11);
        System.out.println(of);
        //获取年
        int year = of.getYear();
        System.out.println(year);//2020
        //获取月份
        int monthValue = of.getMonthValue();
        System.out.println(monthValue);//11
        //获取星期
        DayOfWeek dayOfWeek = of.getDayOfWeek();
        System.out.println(dayOfWeek);//WEDNESDAY
        //获取分钟
        int minute = of.getMinute();
        System.out.println(minute);//11

LocalDateTime转换法

 LocalDateTime of = LocalDateTime.of(2020, 11, 11, 11, 11, 11);
        System.out.println(of);
        //保留年月日
        LocalDate localDate = of.toLocalDate();
        System.out.println(localDate);//2020-11-11
        //保留时分秒
        LocalTime localTime = of.toLocalTime();
        System.out.println(localTime);//11:11:11

LocalDateTime格式化和解析

 JDK8的日期格式化器:DateTimeFormatter

 格式化

		LocalDateTime LDT = LocalDateTime.of(2022, 11, 12, 13, 14, 15);
			sout(LDT);//2022-11-12T13:14:15
 		//publiuc String format(指定格式)把一个localDatetime格式化为一个字符串
        //用格式化器DateTimeFormatter的ofPattern方法
        DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
        String s = LDT.format(pattern);
       	 System.out.println(s);//2022年11月12日 13:14:15

解析

//public static LocalDateTime parse(准备解析的字符串,解析格式)
//静态的直接类名.方法名调用就行
      String  s="2000年11月12日 13:14:15";
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
                                                    //传入格式化对象dateTimeFormatter
        LocalDateTime parse = LocalDateTime.parse(s, dateTimeFormatter);
        System.out.println(parse);//2000-11-12T13:14:15

LocalDateTime增加或者减少时间的方法

   LocalDateTime localDateTime = LocalDateTime.of(2020, 11, 12, 13, 14, 15);
        LocalDateTime newlocalDateTime = localDateTime.plusYears(1);
        System.out.println(newlocalDateTime);//2021-11-12T13:14:15
        System.out.println(localDateTime);//2020-11-12T13:14:15

注意点:1. 返回一个新的LocalDateTime对象,返回值就是修改后的结果。
                2. 参数为正,就往后加。参数为负,就王往前减。

LocalDateTime时间修改方法

  public static void main(String[] args) 
        LocalDateTime localDateTime = LocalDateTime.of(2020, 11, 12, 13, 14, 15);
        LocalDateTime localDateTime1 = localDateTime.withYear(2048);
        System.out.println(localDateTime1);
    

Period

public static void main(String[] args) 
        //public static Period between(开始时间,结束时间)计算两个“时间”的间隔
        LocalDate localDate1 = LocalDate.of(2020, 1, 1);
        LocalDate localDate12= LocalDate.of(2048, 12, 12);
        Period period = Period.between(localDate1,localDate12);
        System.out.println(period);//P28Y11M11D
        //获取这段时间年数
        System.out.println(period.getYears());//28
        //获取月数
        System.out.println(period.getMonths());//11
        //获取天数
        System.out.println(period.getDays());//11
        //获取这段时间总月数
        System.out.println(period.toTotalMonths());//347
    

Duration

    public static void main(String[] args) 
        //public static Duration between(开始时间,结束时间) 计算两“时间”的间隔
        LocalDateTime localDateTime = LocalDateTime.of(2020, 1, 1, 13, 14, 15);
        LocalDateTime localDateTime1 = LocalDateTime.of(2020, 1, 2, 11, 12, 13);
        Duration duration = Duration.between(localDateTime,localDateTime1);
        System.out.println(duration);//PT21H57M58S
        //获取这段间隔秒
        System.out.println(duration.toSeconds());//79078
        //获取这段间隔毫秒
        System.out.println(duration.toMillis());//79078000
        //获取这段间隔纳秒
        System.out.println(duration.toNanos());//79078000000000
    

JDK8时间小结

LocalDate 表示日期(年月日)

LocalTime表示时间(时分秒)

LocalDateTime表示时间+日期(年月日时分秒)

时间转换:

创建时间对象(now,of)

获取时间对象中的年月日时分秒

格式化(fomat)

解析(parse)

增加减少时间的方法(plus开头,minus开头)

修改时间(with开头)

计算时间间隔的两个类:

Period Duration

异常

异常:就是程序踹西安了不正常的情况。程序再执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。
注意:语法错误不算在异常体系中。

JVM默认处理方案

如果程序出现了问题,我们没有做任何处理,最终JVM会做默认的处理。

  1. 把异常的名称,异常原因及一场踹西安的位置等信息输出在控制台。

  2. 程序停止执行。

异常处理方式

1.自己不处理,交给调用者处理

throws

格式:throws 异常类名;
注意:这个格式是写在方法的定义出,表示声明一个异常。

编译时异常因为再编译时就会检查,所以必须要写在方法后面进行显示声明

运行时异常因为在运行时才会发生,所以在方法后面可以不写

public class Test01 
    public static void main(String[] args) throws ParseException  
		//metom1();//此时调用者也没有处理,也是交给jvm虚拟机处理
         method2();//还是继续交给调用者处理,而main方法的调用者是虚拟机还是采取虚拟机默认的处理异常方法。
    
    //throws作用,告诉调用者,有可能会出现这样的错误,
    //如果方法中没有出现异常,那么程序正常执行。
    //如果出现了异常也是交给 调用者处理
    //如果声明的异常 是一个运行时异常,那么声明的代码可以省略。
    public static void metom1()throws  NullPointerException
        int[] arr = null;
        for (int i = 0; i < arr.length; i++) 
            System.out.println(arr[i]);
        
    
    //告诉调用者,有可能会出现这样的错误,
    //如果方法中没有出现异常,那么程序正常执行。
    //如果出现了异常也是交给 调用者处理
    //如果声明的异常是编译时异常,所以必须手动对异常进行声明
    private static void method2() throws ParseException 
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
        sdf.parse("2048-10-10");
    

抛出异常对象---throw

思考:以前出现了异常,虚拟机帮我们创建一个异常对象,抛给调用者。但是如果我们需要自己手动创建一个异常对象该如何写。

格式:throw new 异常();

public static void main(String[] args) 
        System.out.println("家里有个貌美如花的老婆");
        System.out.println("还有一个当官的兄弟");
        System.out.println("自己还有一个买卖");
        System.out.println("这样的生活你要不要?");
        throw  new RuntimeException();//当代码执行到这里,就创建一个异常对象
                                        //该异常创建之后,暂时没有手动处理,抛给了调用者处理
                                        //下面的代码不会再执行了。
        System.out.println("武大郎的标准生活");
    

throws和throw的区别

抛出处理异常的意义

在方法中,当传递的参数有无,没有继续运行下去的意义了,则采取抛出处理,表示让该方法结束运行。 告诉调用者方法中出现了问题

异常处理方式----try...catch....

 

public static void main(String[] args) 
    // int[] arr = 1,2,3,4,5;
    int[] arr = null;
    //好处:为了能让代码继续往下运行
    try 
        //有可能发现异常的代码
        prinArr(arr);
     catch (NullPointerException e) 
        //如果发现异常,就进行这样的操作
        System.out.println("参数不能为null");//参数不能为null
    
    System.out.println("hello");// 代码继续往下运行hello
    /*prinArr(arr);//调用者就会收到一个异常
    //自己处理一下自己的异常*/


private static void prinArr(int[] arr) 
    if (arr == null) 
        //调用者知道成功打印了吗?
        //System.out.println("参数不能为null");
        throw new NullPointerException();//当参数为null的时候
        //手动创建一个异常对象,抛给调用者
    
    for (int i = 0; i < arr.length; i++) 
        System.out.println(arr[i]);
    

好处:让代码继续往下运行

Throwable的成员方法

  public static void main(String[] args) 
        try 
            int[] arr = 1,2,3,4,5;
            System.out.println(arr[10]);//虚拟机自动帮我们创建了个new ArrayIndexOutOfBoundsException对象
         catch (ArrayIndexOutOfBoundsException e) 
            String message = e.getMessage();//返回此throwable详细消息字符串
            System.out.println(message);//Index 10 out of bounds for length 5

            String s = e.toString();//返回此抛出异常的简短描述
            System.out.println(s);//java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 5

            e.printStackTrace();//红色字体打印异常情况
        
        System.out.println("嘿嘿嘿");//继续执行嘿嘿嘿
    

两种处理方式的小结

抛出 throw throws

  1. 在方法中,当传递的参数有误,没有继续运行下去的意义了,再采取抛出处理。表示让该方法结束运行。

  2. 告诉调用者出现了问题。

捕获 try...cath

  1. 捕获:能让代码继续运行下去。

自定义异常

为了让异常信息更加的见名之意。

定义完异常,可以调用异常。

1.定义异常类

2.写继承关系

3.空参构造

4.有参构造

//AgeChaoChuFanWei见名知意
public class AgeChaoChuFanWei extends RuntimeException
    public AgeChaoChuFanWei() 
    

    public AgeChaoChuFanWei(String message) 
        super(message);
    

以上是关于第十三天下(日期Data,SimpleDateFormat,LocalDateTime,计算年月日Period,计算时分秒Duration,异常两种处理方式,Throwable,自定义异常)的主要内容,如果未能解决你的问题,请参考以下文章

『PyTorch』第十三弹_torch.nn.init参数初始化

第十三届蓝桥杯省赛C++B组 真题题解(详细讲解+代码分析)看这篇就够了~~~

第十三届蓝桥杯省赛C++B组 真题题解(详细讲解+代码分析)看这篇就够了~~~

2022 第十三届蓝桥杯大赛软件赛省赛,C/C++ 大学B组题解

Linux系统:第十三章:centos误删文件如何恢复文件数据

Linux系统:第十三章:centos误删文件如何恢复文件数据