栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

基于Java8的日期和事件API

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于Java8的日期和事件API

时间线

Java的Date和Time的API都具有以下规范
1、每天86400秒
2、每天正午进行时间精准匹配;
3、其他时间进行接近匹配;
因此Java的时间api能符合官方时间的变化;

Instant类提供了时间的计数;其可以充当时间戳,可以使用其方法比较两个对象,比如isAfter、isBefore判断前后关系;
为了得出时间差,引入了Duration静态类的between方法;然后使用Duration类的getSeconds、toDay、toMinutes、toHours等方法得到自己所需要的值;
可以这样理解,Instant记录了时刻,而Duration用于表示时间长度;

public class TimeTest {
    public static void main(String[] args) {
        
        Instant start = Instant.now();
        //运行程序
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        Instant end = Instant.now();
        System.out.println(start.isAfter(end));//false

        Instant min = Instant.MIN;//1970年1月1日
        //使用duration进行扩展操作
        Duration duration = Duration.between(start, end);
        System.out.println(duration.getSeconds());//3
        Duration duration2 = Duration.between(min, end);
        System.out.println(duration2.toDays());//365243238465
    }
}
日期线 本地日期LocalDate

LocalDate是java中的日期对象类,可以使用它来表示带有年月日的日期,构建对象依然可以使用LocalDate的now或of静态方法的形式;
如果需要只表示月和日,可以使用MonthDay类,或者只用年和月使用YearMonth等;

public class DateTest {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        LocalDate bir = LocalDate.of(2000, Month.JUNE,6);
        //可以使用方法计算之后多少天是那个日子;
        LocalDate program = LocalDate.of(2021,1,1).plusDays(255);//计算了2021年的第255天

        System.out.println("当天是星期"+program.getDayOfWeek().getValue());//获取当天周几
        boolean leapYear = program.isLeapYear();//判断是不是闰年
    }
}
日期调整器TemporalAdjuster

有时候需要做一些特殊的计算,比如计算当11月的第四个星期五
java中提供了TemporalAdjuster类作为特殊日期管理,提供了很多静态方法;
可以使用TemporalAdjuster类来作为一个规则应用于日期得到结果;

public class TemporalAdjustTest {
    public static void main(String[] args) {
        LocalDate now = LocalDate.of(2021,11,1);
        TemporalAdjuster temporalAdjuster = TemporalAdjusters.lastInMonth(DayOfWeek.FRIDAY);

        System.out.println(temporalAdjuster.adjustInto(now));//2021.11.26
    }
}
本地时间

LocalTime和LocalDateTime用于表示时间日期;

public class LocalDateTimeTest {
    public static void main(String[] args) {
        LocalDateTime local = LocalDateTime.now();
        System.out.println(local);
        System.out.println(local.getHour());
    }
}
时区时间

Java中使用了IANA的数据库所记录的时区编码ID,通过传入参数实现不同时区的时间表达,ZonedDateTime表示时区时间,参数的最后一位为时区id

        ZonedDateTime zonedDateTime = ZonedDateTime.of(local, ZoneId.of("Asia/Shanghai"));
        System.out.println(zonedDateTime);
    
日期格式化

使用格式器DateTimeFormater来格式化时间的输出与输入;

        LocalDateTime time = LocalDateTime.now();
        //系统格式器
        DateTimeFormatter isoLocalDateTime = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
        //自定义格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        //格式输出
        formatter.format(time);
        //格式输入
        formatter.parse("2020-01-02");
        
与遗留类的转化

基本是toxxx类方法或者from(xx);进行转化;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/434385.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号