Java中的时间类

JDK8以前

System静态方法获取时间戳(1970到当前时间毫秒数)

long l = System.currentTimeMillis();

Date类

util.Date包下的
 Date date = new Date();
        Date date1 = new Date(2021-1900,5-1,10);
        //已经过时不建议使用(需要年份减1900,月份减1,有偏移量)
        System.out.println(date.toString());
        //Tue Jun 15 11:11:16 CST 2021
        System.out.println(date1.toString());
        //Mon May 10 00:00:00 CST 2021
        System.out.println(date.getTime());
        //1623726676035
sql.Date包下的
java.sql.Date date2 = new java.sql.Date(date.getTime());
        System.out.println(date2);
        //2021-06-15
        java.sql.Date date3 = new java.sql.Date(date1.getTime());
        System.out.println(date3);
        //2021-05-10
        System.out.println(new java.sql.Date(System.currentTimeMillis()));
        //2021-06-15

SimpleDateFormat类

 SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
     //格式化 日期--》字符串
        Date date = new Date();
        System.out.println(simpleDateFormat.format(date));
        //这个方法返回的是一个String(2021/6/15 上午11:33)
     //解析   字符串--》日期
        String str = "2025/8/15 上午12:00";
        try {
            //怕我们给的字符串不靠谱要抛一个异常
            System.out.println(simpleDateFormat.parse(str));
            //Fri Aug 15 00:00:00 CST 2025
            System.out.println(simpleDateFormat.parse(str).getTime());
            //1755187200000
        } catch (ParseException e) {
            e.printStackTrace();
        }
        //可以自己设置格式
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss");
        System.out.println(simpleDateFormat1.format(new Date()));
        //这里就可以按照我们设定的格式输出2021-06-15-11-43-27
        try {
            System.out.println(simpleDateFormat1.parse("1988-11-25-12-30-00"));
            //Fri Nov 25 00:30:00 CST 1988
        } catch (ParseException e) {
            e.printStackTrace();
        }

Calendar抽象类

// Calendar类抽象的======= 注意这里每次更改都是在上一次改动的基础上改动===========
        Calendar instance = Calendar.getInstance();
        //利用给的静态方法,实际还是子类的对象,多态的体现
        GregorianCalendar gregorianCalendar = new GregorianCalendar();
        //利用子类的构造器
        //四个方法
        //1.get获取时间
        System.out.println(instance.getTime());
        //结果Tue Jun 15 11:52:19 CST 2021
        System.out.println(instance.get(Calendar.DATE));
        //结果15,本月第十五天
        System.out.println(instance.get(Calendar.DAY_OF_YEAR));
        //结果166,今年第166天
        System.out.println(instance.get(1));
        //等同instance.get(Calendar.FEBRUARY),结果2021
        //2.set设置时间(有偏移量)
        instance.set(2021,3,2);
        //手动设置一个时间(有偏移量,月份是0-11,不是1-12)
        System.out.println(instance.getTime());
        //输出的时间变为Fri Apr 02 12:05:25 CST 2021,已经是2021年4月2日
        instance.set(Calendar.DAY_OF_YEAR,20);
        //将时间改成了这一年的第20天
        System.out.println(instance.getTime());
        //Wed Jan 20 12:08:04 CST 2021,已经是一月20日
        //3.增加时间
        instance.add(Calendar.MONTH,4);
        //月份加4
        System.out.println(instance.get(Calendar.MONTH));
        //输出月份变成4
        //4.getTime和setTime
        Date time = instance.getTime();
        Date date1 = new Date();
        instance.setTime(date1);

JDK8.0新增

LocalDate,LocalTime,LocalDateTime

//localDate======= 注意这里每次更改不会对原有的内容更改和String类似===========
    //实例化方法一
    LocalDate now = LocalDate.now();
    System.out.println(now);
    //2021-06-15
    //实例化方法二(没有偏移量)
    System.out.println(LocalDate.of(1931, 9, 18));
    //193-09-18这个没有偏移量设多少就是多少
    //方法
    System.out.println(now.getDayOfYear());
    //166,一年中第几天也有now.getDayOfMonth()和now.getDayOfWeek()方法
    System.out.println(now.getMonth());
    //JUNE,获取月份,也有now.getYear()方法
    System.out.println(now.withYear(2022));
    //2022-06-15更改年份了,更改用WithXXX()更改相对应属性
    System.out.println(now.plusYears(10));
    //2031-06-15年份增加十年,增加用plusXXX()增加相应属性
    System.out.println(now.minusDays(899));
    //2018-12-29天数减少了899,
//localTime
    //时分秒。方法和localDate类似
//localDateTime
    //年月日时分秒。方法和localDate类似

instant

Instant now1 = Instant.now();
    System.out.println(now1);
    //现在瞬时时间2021-06-15T04:43:03.631533200Z这个时间不是东八区的时间
    System.out.println(Instant.ofEpochMilli(12561261261l));
    //1970加上Milli数的时间1970-05-26T09:14:21.261Z
    System.out.println(now1.atOffset(ZoneOffset.ofHours(8)));
    //2021-06-15T12:44:20.445167600+08:00,创建了8小时的时间偏移量
    System.out.println(now1.toEpochMilli());
    //1623732344305,获取1970到当前时间的毫秒数
    ```
    
### Date TimeFormatter时间的格式化和解析
```java
//第一种标准化
        DateTimeFormatter Formatter =  DateTimeFormatter.ISO_LOCAL_DATE_TIME;
        LocalDateTime now = LocalDateTime.now();
        //格式化
        System.out.println(Formatter.format(now));
        //2021-06-15T12:59:04.2164441
        //解析
        System.out.println(Formatter.parse("2021-06-15T12:59:04.2164441"));
        //{},ISO resolved to 2021-06-15T12:59:04.216444100
     // 第二种
        DateTimeFormatter Formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT);//DateTime
        //除了FormatStyle.SHORT 还有FormatStyle.LONG等等
        DateTimeFormatter Formatter2 = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL);//Date
        //格式化
        System.out.println(Formatter1.format(now));
        //2021/6/15 下午1:04
        System.out.println(Formatter2.format(LocalDate.now()));
        //2021年6月15日星期二
    // 第三种自定义
        //可以自己设置格式 类似SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss");
        DateTimeFormatter Formatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd-hh-mm-ss");
        System.out.println(Formatter3.format(now));//2021-06-15-01-16-23
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值