java时间API

今天在这里浅谈java时间先关的API:
也不知道以什么顺序,现目前最常用的在后面,大家可以一步一步的阅读,如有遗漏或者错误可一起探讨。

Java起初就有的两个Date类

java.util.Date
在这里插入图片描述
java.sql.Date
看准关键字JDBC哦

整得还挺专业,但不一定能搞懂。现在开始从属性、构造方法和方法进行了解。

/**
 * 这些都是最基础(有的公司用的java版本低,其实也有点用)时间的API,期中有几个方法关于Instant、LocalDate等到了后面自然就会明白
 */
public class DateDemo {
    public static void main(String[] args) {
        DateDemo.utilDateMethod();
        DateDemo.sqlDateMethod();
    }
    public static void sqlDateMethod(){
        //大部分构造方法都已不推荐使用,大同小异。
        java.sql.Date date1 = new java.sql.Date(2020-1900,9,15);//不靠谱:2020-10-15细品
        System.out.println(date1);//2020-10-15
        System.out.println(date1.toString());//2020-10-15  父类java.util.Date从写了Object的toString方法
        java.sql.Date date2 = new java.sql.Date(System.currentTimeMillis());
        System.out.println(date2);//2020-09-06 其实在与JDBC交互的时候,时分秒也有,知识这里显示没有
    }
    public static void utilDateMethod(){
        //大部分构造方法都已不推荐使用,大同小异。
        Date date1 = new Date();
        System.out.println(date1);//Sat Sep 05 11:11:36 CST 2020
        System.out.println(date1.toString());//Sat Sep 05 11:11:36 CST 2020
        date1 = new Date(2020,9,5);//截至JDK 1.1版,由Calendar.set(year + 1900, month, date)或GregorianCalendar(year + 1900, month, date)
        System.out.println(date1);//Tue Oct 05 00:00:00 CST 3920
        date1 = new Date(System.currentTimeMillis());
        System.out.println(date1);//Sat Sep 05 11:20:30 CST 2020
        System.out.println("******************************************");
        //方法也基本不再推荐使用,不过通过这些可以看看以前的老前辈是用什么API编程的。
        System.out.println(date1.getTime());//1599276167404
        System.out.println(date1.getDate());//5没错今天就是5号
        Date date2 = new Date();
        System.out.println(date1.after(date1));//方法体return getMillisOf(this) > getMillisOf(when);before、equals比较时间前后
        System.out.println(date1.equals(date1));
    }
}

至于为什么要减1900(年),网上也没查阅到特别详细的资料,但有说是计算机硬件发展等原因。

日历类简单应用Calendar

这是一个日历的超类,一般我们应用也用这个类,通过getInstance()相关方法获取子类对象进行相应的操作

 // 日历类是一个抽象类
        Calendar rightNow = Calendar.getInstance();
        System.out.println(rightNow.getClass());//class java.util.GregorianCalendar
        //System.out.println(rightNow.getSuperclass());报错,说明它继承与Object超类
        System.out.println(rightNow);//object
        System.out.println(rightNow.get(Calendar.YEAR));//2020
        System.out.println(rightNow.get(Calendar.MONTH));//8
        System.out.println(rightNow.get(Calendar.DATE));//9
        System.out.println(rightNow.getTime());//Wed Sep 09 22:27:35 CST 2020
        rightNow.add(Calendar.YEAR, -1);//将Calendar的年前推1年
        System.out.println(rightNow.getTime());//Mon Sep 09 22:30:10 CST 2019
        rightNow.add(Calendar.MONTH, -3);//将Calendar的月前推3个月
        System.out.println(rightNow.getTime());//Sun Jun 09 22:30:10 CST 2019
        // 设置日历类相关信息
        rightNow.set(2021,9,9);
        System.out.println(rightNow.getTime());//Sat Oct 09 22:44:38 CST 2021

各种开发都会使用的SimpleDateFormat

 		Date now=new Date();
        //此类是格式化时间的一个时间的实现类,先开发中使用还是比较平凡
        //继承DateFormat
        SimpleDateFormat fmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        System.out.println(fmt.format(now));//2020年09月11日 22时12分50秒
        SimpleDateFormat Fmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//
        System.out.println(Fmt2.format(now));//2020-09-11 22:12:50
        SimpleDateFormat fmt3=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");
        System.out.println(fmt3.format(now));//2020年09月11日 22时12分50秒 星期五
        SimpleDateFormat fmt4=new SimpleDateFormat(
                "一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区");
        System.out.println(fmt4.format(now));//一年中的第 255 天 一年中第37个星期 一月中第2个星期 在一天中22时 CST时区
        System.out.println(now.getTime());//1599833570517

Java 8之后新工具

LocalDate工具类

 //根据设置的时间进行操作
        LocalDate localDate = LocalDate.of(2020, 9, 11);
        System.out.println(localDate.getEra());
        System.out.println(localDate);
        System.out.println(localDate.getYear());//2020SEPTEMBER
        System.out.println( localDate.getMonth());//
        System.out.println("dayOfWeek = " + localDate.getDayOfWeek());//FRIDAY
        System.out.println(localDate.lengthOfMonth());//30
        boolean leapYear = localDate.isLeapYear(); // 是否是闰年
        System.out.println("leapYear = " + leapYear);
        //获取系统日期(通过很多静态的方法),有不可变的特性,这样在操作上会便捷许多
        System.out.println("LocalDate.now() = " + LocalDate.now());

在这里插入图片描述

java 新的时间API其他工具类

 // LocalTime 包含具体时间
        LocalTime localTime = LocalTime.of(22, 10, 59);
        System.out.println("localTime = " + localTime);
        LocalDate localDate = LocalDate.of(2020, 9, 11);
        // LocalDateTime包括LocalDate和LocalTime
        LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
        System.out.println("localDateTime = " + localDateTime);
        //LocalDateTime 和 LocalDate, LocalTime 相互转换
        LocalDate localDate1 = localDateTime.toLocalDate();
        LocalTime localTime1 = localDateTime.toLocalTime();
        // 一个时间戳
        Instant instant = Instant.now();
        System.out.println("instant = " + instant);//instant = 2020-09-11T14:45:21.106Z
        // 以年月日来表示时间段
        Period period = Period.between(localDate, localDate1);
        System.out.println(period);//P0D
        // 时间加减操作
        LocalDate date = LocalDate.now();
        LocalDate localDate2 = date.minusDays(5);
        LocalDate localDate3 = date.plusYears(10);
        date.plus(5, ChronoUnit.DAYS);
        System.out.println("localDate3 = " + localDate3);//localDate3 = 2030-09-11
        System.out.println("localDate2 = " + localDate2);//localDate2 = 2020-09-06

根据不同的开发场景我们的选择性跟多,同时知道的必须越多。学习文章参考文,希望通过今后的项目开发能解锁跟多的知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值