java8之localDateTime, ZoneId, Instant使用

本文通过实例演示了Java中日期时间API的多种用法,包括Instant、LocalDateTime、ZonedDateTime等类的操作,以及如何实现日期时间与毫秒值之间的转换,并展示了如何利用TemporalField和TemporalAdjusters进行日期调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoField;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
        // instant使用
        System.out.println("instant使用————————————");
        System.out.println(Instant.now().toEpochMilli());
        System.out.println(new Date().getTime());
        Instant instant = Instant.now();
        System.out.println(instant);
        System.out.println("**********************");
       
        //LocalDateTime - > long
        System.out.println("LocalDateTime -> long使用");
        System.out.println(LocalDateTime.now().atZone(Clock.systemDefaultZone().getZone()).toInstant().toEpochMilli());
        System.out.println(LocalDateTime.now().toInstant(ZoneOffset.ofHours(8)).toEpochMilli());
        System.out.println("**********************");
       

        //long -> LocalDateTime
        System.out.println("long -> LocalDateTime使用");
        DateTimeFormatter dateTimeFormatter= DateTimeFormatter.ofPattern("YYYY-MM-dd HH:mm:ss");
        String st = dateTimeFormatter.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(new Date().getTime()), ZoneId.of("Asia/Shanghai")));
        System.out.println(st);
        System.out.println("***********************");
       

        //ZonedDateTime
        System.out.println(Instant.now().atZone(ZoneId.systemDefault()).toLocalDateTime());

        //TemporalField 和 TemporalAdjusters
        System.out.println("TemporalField 和 TemporalAdjusters使用");
        LocalDateTime localDateTime1 = LocalDateTime.now();
        System.out.println(localDateTime1.plusDays(1));
        System.out.println(localDateTime1.with(ChronoField.YEAR,2013));
        System.out.println(localDateTime1.with(ChronoField.DAY_OF_YEAR,20));
        System.out.println(localDateTime1.with(ChronoField.MONTH_OF_YEAR,12));
        System.out.println(localDateTime1.with(TemporalAdjusters.firstDayOfMonth()));
        System.out.println(localDateTime1.get(ChronoField.YEAR));
        System.out.println(localDateTime1.get(ChronoField.MONTH_OF_YEAR));
        System.out.println(localDateTime1.get(ChronoField.DAY_OF_YEAR));
        System.out.println(localDateTime1.get(ChronoField.HOUR_OF_AMPM));
        System.out.println(localDateTime1.minusDays(1));
        System.out.println("*************************");
        

        //Date -> String
        System.out.println("Date -> String使用");
        DateTimeFormatter df= DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
        String string = df.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(new Date().getTime()),ZoneId.of("Asia/Shanghai")));
        System.out.println(string);
        
    }
}


instant使用————————————
1517311132643
1517311132643
2018-01-30T11:18:52.643Z
**********************

LocalDateTime -> long使用
1517311132734
1517311132735
**********************

long -> LocalDateTime使用
2018-01-30 19:18:52
***********************

2018-01-30T19:18:52.743
TemporalField 和 TemporalAdjusters使用
2018-01-31T19:18:52.744
2013-01-30T19:18:52.744
2018-01-20T19:18:52.744
2018-12-30T19:18:52.744
2018-01-01T19:18:52.744
2018
1
30
7
2018-01-29T19:18:52.744
*************************

Date -> String使用
2018-01-30 07:18:52


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值