7月28号学习笔记

时间:

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

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

时间戳:

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

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

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

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

日期类:Date
获取当前系统日期时间:

        Date data=new Date();
        System.out.println(data);
运行结果: 

获取毫秒数:    
data.getTime()
返回自1970年1月1日以来,由此 Date对象表示的00:00:00 GMT的毫秒数 。返回值为long
对象是否在参数日期后    
System.out.println(date1.after(date2));
如果date1在date2后则返回true,反之返回false。
对象是否在参数日期之前    
System.out.println(date1.before(date2));
如果date1在date2之前则返回true,反之返回false。
两个日期进行比较

System.out.println(date1.compareTo(date2));
如果参数Date等于此Date,则值为0 ; 如果此日期在Date参数之前,该值小于0 ; 如果此日期在Date参数0则值大于0 。
返回负数时,说明调用者时间是在参数时间之前

当返回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));
c++实验 日期时间类定义
docx

0星
超过10%的资源
20KB

下载
例题:

设计一个工具类:
可以对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

判断合法的日期时间数据
zip

0星
超过10%的资源
1KB

下载
LocalDateTim代替Calender

DateTimeFormatter代替SimpleDateFormat

Instant:
获取当前时间(依照美国时间算)    
Instant instant=Instant.now();

获取秒数    
instant.getEpochSecond();

获取毫秒数(返回的是long类型)    instant.toEpochMilli()
Duration持续时间(显示七天后的日期)    instant.plus(Duration.ofDays(7));
LocalDate/LocalTime:获取日期/获取时间
LocalDate localdate=LocalDate.now();

获取年    getYear();
获取月    getMonth();
判断是否为闰年    isLeapYear();
LocalDate of=LocalDate.of(2024,9,10);可以定义一个日期,用of.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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值