JAVASE基础模块四十五(JDK1.8新功能 Lambda表达式 格式化日期 减去时间 加上时间 判断时间)

JAVASE基础模块四十五(JDK1.8新功能 Lambda表达式 格式化日期 减去时间 加上时间 判断时间)

Date

  • Date
  1. SimpleDateFormat
  2. Calendar
  • 方法
    1. 获取日期
      • LocalDate.now()年月日
      • LocalTime.now()时分秒
      • LocalDateTime.now()年月日时分秒
    2. 指定日期
    • LocalDateTime.of(2018, 6, 25, 15, 54)
    1. 获取具体分类时间
      • now2.getDayOfYear()
      • now2.getDayOfMonth()
      • now2.getMonthValue() 运用了枚举
      • now2.getDayOfWeek()
      • now2.getHour()
package New.X1;

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

public class DateAPI {
    public static void main(String[] args) {
        LocalDate now = LocalDate.now();
        System.out.println(now);
        LocalTime now1 = LocalTime.now();
        System.out.println(now1);
        LocalDateTime now2 = LocalDateTime.now();
        System.out.println(now2);
        int y = now2.getDayOfYear();
        int m = now2.getDayOfMonth();
        int m1 = now2.getMonthValue();
        DayOfWeek w = now2.getDayOfWeek();
        int h = now2.getHour();
        System.out.println(y);
        System.out.println(m);
        System.out.println(m1);
        System.out.println(w);
        System.out.println(h);
        LocalDateTime of = LocalDateTime.of(2018, 6, 25, 15, 54);
        System.out.println(of);
    }
}
运行结果:
2020-08-29
17:20:38.338841800
2020-08-29T17:20:38.338841800
242
29
8
SATURDAY
17
2018-06-25T15:54

格式化日期

  • DateTimeFormatter g = DateTimeFormatter.ofPattern(“yyyy年MM月dd日 HH时mm分ss秒”) 格式化日期的类
  • now.format(g) 格式化日期
  • 解析日期 LocalDateTime.parse(s, DateTimeFormatter.ofPattern(“yyyy年MM月dd日 HH时mm分ss秒”))
package New.X1;

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

public class GeShiHua {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        System.out.println(now);
        DateTimeFormatter g = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒");
        String s = now.format(g);
        System.out.println(s);
        System.out.println("==================");
        String se="2020年12月31日 23时59分59秒";
        LocalDateTime mo = LocalDateTime.parse(s, DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒"));
        System.out.println(mo);

    }
}
运行结果:
2020-08-29T17:23:34.134812800
2020年08月29日 17时23分34秒
==================
2020-08-29T17:23:34

减去时间

package New.X1;

import java.time.LocalDateTime;

public class Jian {
    public static void main(String[] args) {
        //minxxx 减去时间
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime y = now.minusYears(5);
        LocalDateTime m = now.minusMonths(10);
        System.out.println(y);
        System.out.println(m);
    }
}
运行结果:
2015-08-29T17:24:00.638455400
2019-10-29T17:24:00.638455400

加上时间

package New.X1;

import java.time.LocalDateTime;

public class ZengJia {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime y = now.plusYears(3);
        LocalDateTime m = now.plusMonths(5);
        //plusxxx 的方法 返回的是新的对象
        System.out.println(y);
        System.out.println(m);
    }
}
2023-08-29T17:24:57.359865300
2021-01-29T17:24:57.359865300

判断

package New.X1;

import java.time.LocalDate;

public class PanDuan {
    public static void main(String[] args) {
        LocalDate of = LocalDate.of(2022, 3, 24);
        LocalDate now = LocalDate.now();
        //判断时间前后
        System.out.println(of.isBefore(now));
        System.out.println(of.isAfter(now));
        //判断是不是闰年
        System.out.println(of.isLeapYear());
    }
}
运行结果:
false
true
false

一些方法

package New.X1;

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjuster;
import java.time.temporal.TemporalAdjusters;

public class ZhiD {
    public static void main(String[] args) {
        LocalDate now = LocalDate.now();
        System.out.println(now);
        LocalDate y = now.withYear(3333);
        System.out.println(y);
        System.out.println("==================================");
        /*月份的第一天
        下周几的日期*/
        TemporalAdjuster one = TemporalAdjusters.firstDayOfMonth();
        LocalDate w = now.with(one);
        System.out.println(w);
        TemporalAdjuster one1 = TemporalAdjusters.next(DayOfWeek.SATURDAY);
        LocalDate w1 = now.with(one1);
        System.out.println(w1);
        TemporalAdjuster one2 = TemporalAdjusters.nextOrSame(DayOfWeek.WEDNESDAY);
        LocalDate w2 = now.with(one2);
        System.out.println(w2);
    }
}
运行结果:
2020-08-29
3333-08-29
==================================
2020-08-01
2020-09-05
2020-09-02

毫秒值

package New.X2;

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

public class HaoMiao {
    public static void main(String[] args) {
        long t = new Date().getTime();
        System.out.println(t);
        //获取1970-到现在的秒值
        Instant i = Instant.now();
        long miao = i.getEpochSecond();
        System.out.println(miao);
        //获取1970-到现在的毫秒值
        long l = i.toEpochMilli();
        System.out.println(l);
        //增加秒值 增加一天
        Instant in = Instant.ofEpochSecond(60 * 60 * 24);
        System.out.println(in);
    }
}
运行结果:
1598693335163
1598693335
1598693335164
1970-01-02T00:00:00Z

间隔

package New.X2;

import java.time.Duration;
import java.time.Instant;
import java.time.LocalDate;
import java.time.Period;

public class JianGe {
    public static void main(String[] args) {
        Instant now = Instant.now();
        int n=0;
        for (int i = 0; i < 500; i++) {
            n++;
        }
        Instant end = Instant.now();
        Duration b = Duration.between(now,end);
        long l = b.toNanos();
        System.out.println(l);

        LocalDate of = LocalDate.of(1998, 11, 15);
        LocalDate now1 = LocalDate.now();
        Period bb = Period.between(of, now1);
        int y = bb.getYears();
        System.out.println(y);
        int m = bb.getMonths();
        System.out.println(m);

    }
}
运行结果:
0
21
9

时间戳

package New.X2;

import java.time.*;
import java.util.Set;

public class ShiJianChuo {
    public static void main(String[] args) {
        Instant now = Instant.now();
        System.out.println(now);
        //设置偏移时间量
        OffsetDateTime p = now.atOffset(ZoneOffset.ofHours(8));
        System.out.println(p);
        /*ZoneID 时区类*/
        Set<String> a = ZoneId.getAvailableZoneIds();
        for (String s : a) {
            if (s.contains("Shanghai")) {
                System.out.println(s);
            }
            if (s.contains("Tokyo")) {
                System.out.println(s);
            }
        }
        LocalDateTime now1 = LocalDateTime.now(ZoneId.of("Asia/Tokyo"));
        System.out.println(now1);
        //默认时区id
        ZoneId z = ZoneId.systemDefault();
        System.out.println(z);
    }
}

运行结果:
2020-08-29T09:30:26.027691300Z
2020-08-29T17:30:26.027691300+08:00
Asia/Shanghai
Asia/Tokyo
2020-08-29T18:30:26.058608700
Asia/Shanghai

下一个工作日的判断

package New.X2;

import java.time.LocalDate;
import java.time.temporal.Temporal;
import java.time.temporal.TemporalAdjuster;

public class WorkDay {
    public static void main(String[] args) {
        LocalDate now = LocalDate.now();
        System.out.println(now.getDayOfWeek());
        LocalDate with = now.with(new TemporalAdjuster() {
            @Override
            public Temporal adjustInto(Temporal temporal) {
                switch (now.getDayOfWeek()) {
                    case SUNDAY:
                        return now.plusDays(1);
                    case SATURDAY:
                        return now.plusDays(2);
                    case FRIDAY:
                        return now.plusDays(3);
                    case THURSDAY:
                        return now.plusDays(4);
                    case WEDNESDAY:
                        return now.plusDays(5);
                    case TUESDAY:
                        return now.plusDays(6);
                    case MONDAY:
                        return now.plusDays(7);
                }
                return null;
            }
        });
        System.out.println(with);
    }
}
运行结果:
SATURDAY
2020-08-31

Lambda表达式

  • lambda 表达式 是匿名内部类的一种简写形式
  • Lambda表达式的语法特点
    1. lambda表达式 引入了一个箭头->
    2. 箭头符号->将lambda表达式分成左右两部分
    3. 左边:写这个接口的抽象方法的形参列表
    4. 右边:你对这个接口的抽象方法的具体的重写逻辑
    5. 当接口中只有一个抽象方法 才能使用Lambda表达式来简写
    6. Lambda表达式只支持函数式接口:借口中只有一个抽象方法
package New.X3;
@FunctionalInterface
//可以检测接口是不是函数式接口
public interface Lambda {
   int show(String name,int age);
}
class Test{
    public static void main(String[] args) {
        Lambda l1 = new Lambda() {
            @Override
            public int show(String name, int age) {
                return 100;
            }
        };
        Lambda l = (name, age) -> 100;
    }
}

待续…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值