Java时间和日期API

LocalDate本地日期
LocalTime本地日期
LocalDateTime本地日期+时间
Instant时间戳,适合机器时间计算
Duration时间差
Period年、月、日差
ZoneOffset时区偏移量
ZonedDateTime带时区的日期时间
Clock时钟,获取其他地区时钟
DateTimeFormatter时间格式化
Temporal日期-时间获取值的字段
TemporalAdjusteremporal 对象转换,实现自定义
ChronoLocalDate日历系统接口
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoField;

public class DateTime {
    public static void main(String[] args) {
        //1、 获取当前日期
        LocalDate.now();

        //2、创建日期
        LocalDate date = LocalDate.of(2021, 5, 20);

        //3、获取年份
        date.getYear();
        //通过 TemporalField 接口的实现枚举类 ChronoField.YEAR 获取年份
        date.get(ChronoField.YEAR);

        //4、获取月份
        date.getMonth().getValue();
        //通过 TemporalField 接口的实现枚举类 ChronoField.MONTH_OF_YEAR 获取月份
        date.get(ChronoField.MONTH_OF_YEAR);

        //5、获取日
        date.getDayOfMonth();
        //通过 TemporalField 接口的实现枚举类 ChronoField.DAY_OF_MONTH 获取日
        date.get(ChronoField.DAY_OF_MONTH);

        //6、获取周几
        date.getDayOfWeek();

        //7、获取当前月多少天
        date.lengthOfMonth();

        //8、获取当前年是否为闰年
        date.isLeapYear();

        //9、当前时间
        LocalTime nowTime = LocalTime.now();

        //10、创建时间
        LocalTime.of(23, 59, 59);

        //11、获取当前小时
        nowTime.getHour();

        //12、获取分
        nowTime.getMinute();

        //13、获取秒
        nowTime.getSecond();

        //14、获取毫秒
        nowTime.getLong(ChronoField.MILLI_OF_SECOND);

        //15、获取纳秒
        nowTime.getNano();

        //16、创建日期时间对象
        LocalDateTime.of(2020, 9, 21, 1, 2, 3);
        LocalDateTime.of(date, nowTime);

        //17、获取当前日期时间对象
        LocalDateTime.now();

        //18、通过 LocalDate 创建日期时间对象
        date.atTime(1, 2, 3);

        //19、通过 LocalTime 创建日期时间对象
        nowTime.atDate(date);

        //20、通过 LocalDateTime 获取 LocalDate 对象
        LocalDateTime.now().toLocalDate();

        //21、通过 LocalDateTime 获取 LocalTime 对象
        LocalDateTime.now().toLocalTime();

        //22、解析日期字符串
        LocalDate.parse("2021-05-20");

        //23、解析时间字符串
        LocalTime.parse("12:12:12");

        //24、解析日期时间字符串
        LocalDateTime.parse("2021-05-20T12:12:12", DateTimeFormatter.ISO_LOCAL_DATE_TIME);

        //25、方便时间建模、机器处理的时间处理类 Instant,起始时间 1970-01-01 00:00:00
        //起始时间 + 3 秒
        Instant.ofEpochSecond(3);
        //起始时间 + 3 秒 + 100 万纳秒
        Instant.ofEpochSecond(3, 1_000_000_000);
        //起始时间 + 3 秒 - 100 万纳秒
        Instant.ofEpochSecond(3, -1_000_000_000);
        //距离 1970-01-01 00:00:00 毫秒数
        Instant.now().toEpochMilli();

        //26、Duration:LocalTime、LocalDateTime、Intant 的时间差处理
        Duration.between(LocalTime.parse("12:12:12"), LocalTime.parse("12:12:12"));
        Duration.between(LocalDateTime.parse("2021-05-20T12:12:12"), LocalDateTime.parse("2021-05-20T12:12:12"));
        Duration.between(Instant.ofEpochMilli(1600623455080L), Instant.now());

        //27、日期时间,前、后、相等比较
        //2021-05-20 在 2021-05-10 前?
        LocalDate.parse("2021-05-20").isBefore(LocalDate.parse("2021-05-10"));
        //12:12:12 在 12:12:10 后?
        LocalTime.parse("12:12:12").isAfter(LocalTime.parse("12:12:10"));

        //28、修改日期、时间对象,返回副本
        //修改日期返回副本
        LocalDate.now().withYear(2021).withMonth(5).withDayOfMonth(20);
        LocalDate date4Cal = LocalDate.now();
        //加一周
        date4Cal.plusWeeks(1);
        //减两个月
        date4Cal.minusMonths(2);
        //减三年
        date4Cal.minusYears(3);

        //29、格式化
        //格式化当前日期
        LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE);
        //指定格式,格式化当前日期
        LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
        //指定格式,格式化当前日期时间
        LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd  HH:mm:ss"));

        //30、解析
        //日期解析
        LocalDate.parse("2021-05-20");
        //指定格式,日期解析
        LocalDate.parse("2021/05/20", DateTimeFormatter.ofPattern("yyyy/MM/dd"));
        //指定格式,日期时间解析
        LocalDateTime.parse("2021/05/20 12:12:12", DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"));

        //31、时区
        //上海时区
        ZoneId shanghaiZone = ZoneId.of("Asia/Shanghai");
        //设置日期为上海时区
        LocalDate.now().atStartOfDay(shanghaiZone);
        //设置日期时间为上海时区
        LocalDateTime.now().atZone(shanghaiZone);
        //设置 Instant 为上海时区
        Instant.now().atZone(shanghaiZone);

        //32、子午线时间差
        //时间差减 1 小时
        ZoneOffset offset = ZoneOffset.of("-01:00");
        //设置时间差
        OffsetDateTime.of(LocalDateTime.now(), offset);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值