Java8 时间用例

package time;

import org.junit.Test;

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

/**
 * @author XRZ
 * @date 2019\2\25 0025
 * @Description :
 */
public class Time {

    @Test
    public void test1(){
        LocalDate localDate1 = LocalDate.now();
        System.out.println(localDate1);
        LocalDate localDate2 = LocalDate.of(2019, 06, 06);
        LocalDate localDate3 = LocalDate.of(2019, Month.JUNE, 06);
        System.out.println(localDate2 + " " + localDate3);
        System.out.println(localDate2.getDayOfYear());
        System.out.println(localDate2.getDayOfWeek());
        System.out.println(localDate2.getDayOfMonth());
        System.out.println(localDate2.getMonth());
        System.out.println(localDate2.get(ChronoField.DAY_OF_WEEK));
        System.out.println(localDate2.get(ChronoField.DAY_OF_YEAR));

        // LocalTime
        LocalTime localTime1 = LocalTime.now();
        System.out.println(localTime1);
        LocalTime localTime2 = LocalTime.of(12, 02);
        LocalTime localTime3 = LocalTime.of(12, 02, 03);
        LocalTime localTime4 = LocalTime.of(12, 02, 03, 900_000_000);
        System.out.println(localTime2 + " " + localTime3 + " " + localTime4);
        System.out.println(localTime4.getHour());
        System.out.println(localTime4.getMinute());
        System.out.println(localTime4.getSecond());

        // LocalDateTime
        LocalDateTime localDateTime1 = LocalDateTime.now();
        System.out.println(localDateTime1);
        LocalDateTime localDateTime2 = LocalDateTime.of(2000, Month.AUGUST, 22, 04, 05, 06);
        System.out.println(localDateTime2);
        System.out.println(LocalDateTime.of(localDate1, localTime1));
        System.out.println(localDate2.atTime(localTime2));
        System.out.println(localTime3.atDate(localDate3));
        System.out.println(localTime3.get(ChronoField.HOUR_OF_DAY));
        System.out.println(localTime3.get(ChronoField.MINUTE_OF_HOUR));

        // Instant
        Instant instant = Instant.now();
        System.out.println(instant);
        // 时间戳,秒,毫秒
        System.out.println(instant.toEpochMilli());
        System.out.println(instant.getEpochSecond());
        // Date、Calendar、System
        Date date = new Date();
        System.out.println(date.getTime());
        System.out.println(Calendar.getInstance().getTimeInMillis());
        System.out.println(System.currentTimeMillis());
        System.out.println(instant.toEpochMilli() + " " + instant.getNano());

        // Duration 用在LocalTime、LocalDateTime
        Duration duration1 = Duration.between(localTime1, localTime2);
        System.out.println(duration1);
        System.out.println(Duration.between(localDateTime1, localDateTime2));
        System.out.println(Duration.ofDays(2));
        System.out.println(Duration.ofHours(5));
        System.out.println(Duration.ofMinutes(100));
        System.out.println(Duration.of(2, ChronoUnit.MINUTES));
        System.out.println(Duration.of(2, ChronoUnit.SECONDS));

        // Period用在LocalDate上面
        Period period = Period.between(localDate1, localDate2);
        System.out.println(period);
        System.out.println(Period.ofYears(2));

        // 简单直接的操纵日期
        LocalDate localDate = LocalDate.of(2020, 01, 01);
        System.out.println(localDate);
        LocalDate updLocalDate1 = localDate.withYear(2008);
        LocalDate updLocalDate2 = localDate.withMonth(10);
        LocalDate updLocalDate3 = localDate.withDayOfMonth(31);
        System.out.println(updLocalDate1 + " " + updLocalDate2 + " " + updLocalDate3);
        System.out.println(localDate);
        System.out.println(localDate.with(ChronoField.YEAR, 2019));
        System.out.println(localDate.with(ChronoField.MONTH_OF_YEAR, 06));
        System.out.println(localDate.with(ChronoField.DAY_OF_MONTH, 06));
        System.out.println(localDate.with(ChronoField.YEAR, 2019).with(ChronoField.MONTH_OF_YEAR, 06).with(ChronoField.DAY_OF_MONTH, 06));

        // 使用TemporalAdjuster中预定义的方法快速操纵和修改日期
        System.out.println(localDate.with(TemporalAdjusters.lastDayOfYear()));
        System.out.println(localDate.with(TemporalAdjusters.firstDayOfNextMonth()));
        System.out.println(localDate.with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)));
        System.out.println(localDate.with(TemporalAdjusters.firstInMonth(DayOfWeek.TUESDAY)));

        LocalDate firstMonthOfYear = localDate.with((temporal) -> localDate.withMonth(1));
        LocalDate lastMonthOfYear = localDate.with((temporal) -> localDate.withMonth(12));
        System.out.println(firstMonthOfYear + " " + lastMonthOfYear);

        // 解析日期对象
        LocalDate localDate4 = LocalDate.of(2019, 06, 06);
        System.out.println(localDate4);
        // 转换为特定格式的日期字符串
        System.out.println(localDate4.format(DateTimeFormatter.BASIC_ISO_DATE));
        System.out.println(localDate4.format(DateTimeFormatter.ISO_LOCAL_DATE));
        // 解析指定的日期字符串为LocalDate对象
        LocalDate localDate5 = LocalDate.parse("2009-06-06");
        System.out.println(localDate5);
        LocalDate localDate6 = LocalDate.parse("20090606", DateTimeFormatter.BASIC_ISO_DATE);
        System.out.println(localDate6);

        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy*MM*dd");
        System.out.println(localDate5.format(dateTimeFormatter));
        System.out.println(LocalDate.parse("2019*06*06", dateTimeFormatter));

        // 时区
        ZoneId nowZoneId = ZoneId.systemDefault();
        ZoneId japanZoneId = ZoneId.of("Asia/Tokyo");
        System.out.println(nowZoneId + " " + japanZoneId);
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localDateTime);

        // 标明这个时间是哪个时区下的
        System.out.println(localDateTime.atZone(japanZoneId));
        System.out.println(localDateTime.atZone(nowZoneId));

        // 时间戳转为另外一个时区的时间
        System.out.println(Instant.now().atZone(japanZoneId));

        // LocalDateTime和Instant互转
        Instant instant1 = Instant.now();
        LocalDateTime localDateTime3 = LocalDateTime.ofInstant(instant1, nowZoneId);
        LocalDateTime localDateTime4 = LocalDateTime.ofInstant(instant1, japanZoneId);
        System.out.println(localDateTime3 + " " + localDateTime4);
        Instant instant2 = localDateTime.toInstant(ZoneOffset.of("+08:00"));
        System.out.println(instant2);

        // ZoneOffset LocalDateTime 和 OffsetDateTime
        ZoneOffset japanOffset = ZoneOffset.of("+09:00");
        ZoneOffset beijingOffset = ZoneOffset.of("+08:00");
        OffsetDateTime offsetDateTime = OffsetDateTime.of(LocalDateTime.now(), beijingOffset);
        OffsetDateTime offsetDateTime1 = OffsetDateTime.of(LocalDateTime.now(), japanOffset);
        System.out.println(offsetDateTime + " " + offsetDateTime1);
    }

}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值