时间:
首先,在计算机里,标准的时间为格林尼治天文台的时间-----格林尼治时间
中国所在的时区为:东八区
时间戳:
1970年1月1日零时零点零分零秒到今天的毫秒数
1s=1000ms,1min=60s,1h=60min,1day=24h
时间戳在全世界都是固定的,以格林尼治时间为准
系统时间戳:System.currentTimeMillis();
日期类:Date
获取当前系统日期时间:
Date data=new Date();
System.out.println(data);
运行结果:
返回负数时,说明调用者时间是在参数时间之前
当返回0时,说明调用者时间和参数时间相同
当返回正数,说明调用者时间是在参数时间之后
Calender:日历类、日期时间
Calender是一个抽象类,不能创建对象
初始化:
提供了一组对“年月日时分秒星期”等信息的操作函数。操作不同时区的信息。
JDK1.1版本开始,在处理时间和日期时,系统推荐使用calender类。
Calender本身比Date强大得多
获取当前时间:
Calendar c=Calendar.getInstance();
System.out.println(c.getTime());//返回的是Date型
以毫秒为单位返回此日历的时间值。返回值为Long | |
转换为Instant | |
TimeZone:时区
获取时区 | |
获取主机的默认时区 | |
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,对于前面的面向对象来说这是一个新的知识面,但又和之前所学有些许关联,今天听课状态较差,多数没听懂,老师也说了今天知识主要给我们了解一下,我决定课后抽出时间继续学习,希望能将它吃下