2022-7-28 第七小组 黄均睿 学习日记 (day21)常用API

时间:

首先,在计算机里,标准的时间为格林尼治天文台的时间-----格林尼治时间

中国所在的时区为:东八区

时间戳:

1970年1月1日零时零点零分零秒到今天的毫秒数

1s=1000ms,1min=60s,1h=60min,1day=24h

时间戳在全世界都是固定的,以格林尼治时间为准

系统时间戳:System.currentTimeMillis();

日期类:Date

获取当前系统日期时间:

  1. Date data=new Date();

  2. System.out.println(data);

运行结果: 

返回负数时,说明调用者时间是在参数时间之前

当返回0时,说明调用者时间和参数时间相同

当返回正数,说明调用者时间是在参数时间之后  

Calender:日历类、日期时间


Calender是一个抽象类,不能创建对象

初始化:

提供了一组对“年月日时分秒星期”等信息的操作函数。操作不同时区的信息。
JDK1.1版本开始,在处理时间和日期时,系统推荐使用calender类。
Calender本身比Date强大得多

 获取当前时间:

Calendar c=Calendar.getInstance();
System.out.println(c.getTime());//返回的是Date型
以毫秒为单位返回此日历的时间值。返回值为Long
getTimeInMillis()

转换为Instant
toInstant​()

TimeZone:时区

获取时区
getTimeZone()

获取主机的默认时区
TimeZone.getDefault()

ZoneId:

getId()---获取时区ID

设置时区:

ZoneId zoneId= ZoneId.of("America/New_York");
日期格式化:

SimpleDateFormat

format:格式化date类型,把Date类型转成String类型我们要展示数据到客户端

parse:把String类型的时间,转成Date类型从客户端传过来的时间,一般都是String类型。存入数据库

Date date=new Date;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss.SSS");
System.out.println(sdf.format(date));

例题:

设计一个工具类:
可以对Date类型的日期进行格式化,转成String,format方法
可以对String类型的日期进行格式转换,转换成Date,parse方法,参数时String ,返回值是Date

 方法类:

public class Ch01 {
    private static final SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss.SSS");
    public static final String in(Date date){
    return sdf.format(date);
    }
    public static final Date on(String date) throws  Exception{
        return sdf.parse(date);
    }
}

Demo测试类:

public class Demo {
    public static void main(String[] args) throws Exception{
       System.out.println( Ch01.in(new Date()));
       System.out.println( Ch01.on("2002年01月22日 12:02:12.253"));
    }
}


以上时间日期类都是在JDK8之前的。

但是会有一些问题:

比如:Date和Calender,获取到的月份都是0-11,而不是我们生活中的1-12

所以根据阿里规约的明确要求:

如果是JDK8的应用

Instant代替Date

LocalDateTim代替Calender

DateTimeFormatter代替SimpleDateFormat

LocalDate/LocalTime:获取日期/获取时间

LocalDate localdate=LocalDate.now();

获取年getYear();
获取月getMonth();
判断是否为闰年isLeapYear();

DateTimeFormatter:修改规范


LocalDateTime l= LocalDateTime.now();
DateTimeFormatter dateTimeFormatter= DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss.SSS");
System.out.println(l.format(dateTimeFormatter));
DateTimeFormatter是单例的,一次只能用一个。

日期类型建的转换:

        Instant instant=Instant.now();
        System.out.println(instant);
        //把instant转成Date
        Date date=Date.from(instant);
        //把Date转成Instant
        Instant toInstant=date.toInstant();
        //把Instant转成LocalDateTime
        LocalDateTime l=LocalDateTime.ofInstant(instant,ZoneId.systemDefault());
        //把LocalDateTime转成Instant
        Instant toL=LocalDateTime.now().toInstant(ZoneOffset.UTC);
//        Demo22 demo=new Demo22();
//        demo.dateToString(date);
        //把date转成LocalDateTime
        Date date1=new Date();
        LocalDateTime ll=LocalDateTime.ofInstant(date1.toInstant(),ZoneId.systemDefault());
        //把LocalDateTime转成date
        LocalDateTime now=LocalDateTime.now();
        ZonedDateTime zonedDateTime=now.atZone(ZoneId.systemDefault());
        Instant instant1=zonedDateTime.toInstant();
        Date date2=Date.from(instant1);

 课下复习

方法的重写和方法的重载之间区别

        方法的重载:方法名相同,参数列表不同,跟返回值和权限修饰无关。

        方法的重写:子类要覆盖掉父类中的方法,就要防止把覆盖变成了重载的失误。

                子类重写的方法的方法名、参数列表、返回值类型必须和父类完全一样,且访问权限修饰符不能小于父类。

总结

        今天学习了常用API,对于前面的面向对象来说这是一个新的知识面,但又和之前所学有些许关联,今天听课状态较差,多数没听懂,老师也说了今天知识主要给我们了解一下,我决定课后抽出时间继续学习,希望能将它吃下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值