JavaSE进阶

10.8.1 java.time

1、本地日期(LocalDate)、本地时间(LocalTime)、本地日期时间(LocalDateTime)

LocalDate代表IOS格式(yyyy-MM-dd)的日期,可以存储 生日、纪念日等日期。

LocalTime表示一个时间,而不是日期

LocalDateTime是用来表示日期和时间的,这是一个最常用的类之一。

 

描述

now() / now(ZoneId zone)

静态方法,根据当前时间创建对象/指定时区的对象

of()

静态方法,根据指定日期/时间创建对象

getDayOfMonth()/getDayOfYear()

获得月份天数(1-31) /获得年份天数(1-366)

getDayOfWeek()

获得星期几(返回一个 DayOfWeek 枚举值)

getMonth()

获得月份, 返回一个 Month 枚举值

getMonthValue() / getYear()

获得月份(1-12) /获得年份

getHours()/getMinute()/getSecond()

获得当前对象对应的小时、分钟、秒

withDayOfMonth()/withDayOfYear()/withMonth()/withYear()

将月份天数、年份天数、月份、年份修改为指定的值并返回新的对象

 with(TemporalAdjuster  t)

将当前日期时间设置为校对器指定的日期时间

plusDays(), plusWeeks(), plusMonths(), plusYears(),plusHours()

向当前对象添加几天、几周、几个月、几年、几小时

minusMonths() / minusWeeks()/minusDays()/minusYears()/minusHours()

从当前对象减去几月、几周、几天、几年、几小时

plus(TemporalAmount t)/minus(TemporalAmount t)

添加或减少一个 Duration 或 Period

isBefore()/isAfter()

比较两个 LocalDate

isLeapYear()

判断是否是闰年(在LocalDate类中声明)

 format(DateTimeFormatter  t)

格式化本地日期、时间,返回一个字符串

 parse(Charsequence text)

将指定格式的字符串解析为日期、时间

    //now()

    @Test

public void testLocalDateTime(){

LocalDate date = LocalDate.now();

LocalTime time = LocalTime.now();

LocalDateTime datetime = LocalDateTime.now();

    }

    //of()或parse

@Test

public void testLocalDate() {

// LocalDate date = LocalDate.now();

// LocalDate date = LocalDate.of(2017, 3, 20);

LocalDate date = LocalDate.parse("2017-03-12");

}

public static void main(String[] args) {

LocalDateTime t = LocalDateTime.now();

System.out.println("这一天是这一年的第几天:"+t.getDayOfYear());

System.out.println("年:"+t.getYear());

System.out.println("月:"+t.getMonth());

System.out.println("月份值:"+t.getMonthValue());

System.out.println("日:"+t.getDayOfMonth());

System.out.println("星期:"+t.getDayOfWeek());

System.out.println("时:"+t.getHour());

System.out.println("分:"+t.getMinute());

System.out.println("秒:"+t.getSecond());

System.out.println(t.getMonthValue());

}

@Test

public void testLocalDate2() {

LocalDate date = LocalDate.now();

        //withXxx()方法,不改变原来的date对象,返回一个新的对象,不可变性

// LocalDate date2 = date.withDayOfMonth(1);//获取这个月的第一天

LocalDate date2 = date.with(TemporalAdjusters.firstDayOfMonth());// 获取这个月的第一天

System.out.println(date2);

// 获取这个月的最后一天

LocalDate date3 = date.with(TemporalAdjusters.lastDayOfMonth());

System.out.println(date3);

//45天后的日期

LocalDate date4 = date.plusDays(45);

System.out.println(date4);

//20天前的日期

LocalDate date5 = date.minusDays(20);

System.out.println(date5);

boolean before = date.isBefore(date5);

System.out.println(date+"是否比"+date5+"早" + before);

System.out.println(date+"是否是闰年:"+date.isLeapYear());

}

MonthDay month = MonthDay.of(8, 14);

MonthDay today = MonthDay.from(date);

System.out.println("今天是否是生日:" + month.equals(today));