java

28.JDK8开始新增日期API:Instant、DateTim

2022-02-07  本文已影响0人  每天起床都想摆

Instant

Instant时间戳

测试代码

  • atZone():instant.atZone(ZoneId.systemDefault()) 使用默认时区
  • Date.from():将Instant对象转换成Date对象
  • toInstant():将Date对象转换成Instant对象
package com.java.jdk8time_update;

import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;

/**
 * Instant类由一个静态的工厂方法now()可以返回当前时间戳
 */
public class InstantTest {
    public static void main(String[] args) {
        // 得到一个时间戳对象
        Instant instant = Instant.now();
        // 所得时间戳不是本时区的
        System.out.println("当前时间戳:" + instant); // 打印的是内容说明重写了toString()方法

        // 使用atZone选定时区
        ZonedDateTime instantResult = instant.atZone(ZoneId.systemDefault()); //返回新的时间戳
        System.out.println(instant.atZone(ZoneId.systemDefault()));

        // 时间戳也可以使用isBefore或者isAfter等相关API(甚至加减)
        System.out.println(instant.isAfter(Instant.from(instantResult)));

        // Instant返回Date对象,使用Date.from()完成对象转换
        Date date = Date.from(instant);
        System.out.println("当前时间戳:" + date);

        // Date对象转换成时间戳对象,使用toInstant()完成对象转换
        instant = date.toInstant();
        System.out.println(instant);
    }
}

DateTimeFormatter

概述

日期时间格式化

测试代码

package com.java.jdk8time_update;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateTimeFormatterTest {
    public static void main(String[] args) {
        // 本地时刻  日期时间 对象
        LocalDateTime ldt = LocalDateTime.now();
        System.out.println(ldt);

        // 解析/格式化器
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        // 正向格式化(格式化器格式化对象)
        String ldtStr1 = dtf.format(ldt);
        System.out.println(ldtStr1);

        // 逆向格式化(对象格式化格式化器,最终也会把对象自己格式化)
        String ldtStr = ldt.format(dtf);
        System.out.println(ldtStr);

        // 解析字符串时间
        DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyy-MM-dd HH:mm:ss");
        String dateStr = "2011-11-11 11:11:11";

        // 解析当前字符串时间成为本地日期时间对象
        // 调用parse()方法:参数一:待解析字符串型日期   参数二:对象格式化器
        LocalDateTime ldt1 = LocalDateTime.parse(dateStr,dtf1);
        System.out.println(ldt1);

        // 解析完成后字符串日期对象变成了本地日期时间对象,因此可以调用一些操作
        System.out.println(ldt1.getDayOfYear());
    }
}
上一篇下一篇

猜你喜欢

热点阅读