JDK1.8判断冬令时和夏令时

本文提供两种方法来判断美国当前是否处于夏令时:一种是通过计算每年夏令时开始和结束的具体日期进行判断;另一种是利用时区规则直接判断。
 //判断美国的时间是否在夏令时
    public static boolean isDaylightTime(LocalDateTime a) {
        LocalDateTime startDate = a.withMonth(3).toLocalDate().atTime(2, 0);
        LocalDateTime startlightDay = startDate.with(TemporalAdjusters.dayOfWeekInMonth(2, DayOfWeek.SUNDAY));
        //更新为11月
        LocalDateTime endDate = a.withMonth(11).toLocalDate().atTime(1, 59,59);
        LocalDateTime endlightDay = endDate.with(TemporalAdjusters.dayOfWeekInMonth(1, DayOfWeek.SUNDAY));

        if (a.isBefore(startlightDay) || a.isAfter(endlightDay)) {
            return false;
        }
        return true;
    }

    //传入指定时间和时区
    public static boolean isDaylightTime(LocalDateTime a,ZoneId dest) {
        ZonedDateTime z1 = a.atZone(dest);
        ZoneRules rules = dest.getRules();
        boolean flag = rules.isDaylightSavings(z1.toInstant());
        return flag;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值