java8 新的时期和时间API
2017-08-11 13:48
330 查看
java.time包中提供了许多新类。
LocalDate:获取日期
LocalDate date1 = LocalDate.of(2017, 8, 11);
LocalDate date2 = LocalDate.now();
int year = date1.getYear();
int month = date1.getMonthValue();
int day = date1.getDayOfMonth();
DayOfWeek dayOfWeek = date1.getDayOfWeek();
Month month2 = date1.getMonth(); 还可以使用get方法得到值,参数为TemporalField接口,可以传入实现类ChronoField枚举类型。
LocalDate date1 = LocalDate.of(2017, 8, 11);
int year = date1.get(ChronoField.YEAR);
int month = date1.get(ChronoField.MONTH_OF_YEAR);
int day = date1.get(ChronoField.DAY_OF_MONTH);
int dayOfWeek = date1.get(ChronoField.DAY_OF_WEEK); LocalTime:获取时间
LocalTime time1 = LocalTime.of(12, 12, 12);
LocalTime time2 = LocalTime.now();
int hour = time1.get(ChronoField.HOUR_OF_DAY);
int minute = time1.get(ChronoField.MINUTE_OF_HOUR);
int second = time1.get(ChronoField.SECOND_OF_MINUTE);
int h = time2.getHour();
int m = time2.getMinute();
int s = time2.getSecond();
int n = time2.getNano(); 还可以把字符串转为LocalDate和LocalTime:
LocalDate date = LocalDate.parse("2017-01-12");
LocalTime time = LocalTime.parse("11:11:11");
parse方法还可以传递DateTimeFormatter参数。
LocalDateTime:日期和时间
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime dateTime1 = LocalDateTime.now();
LocalDateTime dateTime2 = LocalDateTime.of(date, time);
LocalDateTime dateTime3 = LocalDateTime.parse("2017-08-11 11:11:11");
LocalDateTime dateTime4 = date.atTime(time);
LocalDateTime dateTime5 = time.atDate(date);
LocalDate date1 = dateTime1.toLocalDate();
LocalTime time1 = dateTime1.toLocalTime(); Instant类表示的是1970-1-1到现在的秒数。
Instant instant = Instant.now();
Instant instant2 = Instant.ofEpochMilli(System.currentTimeMillis());
Instant instant3 = Instant.ofEpochSecond(instant.getEpochSecond());
Instant instant4 = Instant.parse("2017-01-01T11:11:11.12Z"); Duration和Period是用来计算间隔的。Duration一般用于计算秒与纳秒之间的间隔。Period用于计算日期间隔。
Duration duration1 = Duration.between(LocalTime.of(11, 11), LocalTime.of(11, 12));
Duration duration2 = Duration.ofMinutes(3);
Duration duration3 = Duration.parse("PT15M");//15分钟
Period period1 = Period.between(LocalDate.of(2017, 7, 1), LocalDate.now());
Period period2 = Period.of(1, 1, 1);
Period period3 = Period.ofDays(2);
Period period4 = Period.parse("P-6M3D");//-6月+3天 上面的类都是不可改变对象,和String对象一样。每次修改操作都会生成一个新的对象。
日期时间修改:
LocalDate date = LocalDate.now();
date = date.withDayOfMonth(3);<!--day变为3-->
date = date.with(ChronoField.DAY_OF_MONTH, 11);<!--day为11-->
date = date.minusDays(5);<!--当前日期减去5天-->
date = date.plusDays(12);<!--当前日期加上12天--><!--其他类都有类似操作--> 用TemporalAdjusters类的方法操作日期时间,可以更加灵活的处理日期时间。例如把日期变为这个月的第一天,或者把日期变为下一个星期4
LocalDate date = LocalDate.now();
date = date.with(TemporalAdjusters.lastDayOfMonth());
date = date.with(TemporalAdjusters.dayOfWeekInMonth(7, DayOfWeek.SATURDAY)); 时间日期格式化:
LocalDate date = LocalDate.now();
String s1 = date.format(DateTimeFormatter.BASIC_ISO_DATE);//20170811
String s2 = date.format(DateTimeFormatter.ISO_LOCAL_DATE);//2017-08-11
String s3 = date.format(DateTimeFormatter.ofPattern("dd/MM/yyyy"));//11/08/2017
LocalDate date2 = LocalDate.parse("11/08/2017", DateTimeFormatter.ofPattern("dd/MM/yyyy"));
LocalDate:获取日期
LocalDate date1 = LocalDate.of(2017, 8, 11);
LocalDate date2 = LocalDate.now();
int year = date1.getYear();
int month = date1.getMonthValue();
int day = date1.getDayOfMonth();
DayOfWeek dayOfWeek = date1.getDayOfWeek();
Month month2 = date1.getMonth(); 还可以使用get方法得到值,参数为TemporalField接口,可以传入实现类ChronoField枚举类型。
LocalDate date1 = LocalDate.of(2017, 8, 11);
int year = date1.get(ChronoField.YEAR);
int month = date1.get(ChronoField.MONTH_OF_YEAR);
int day = date1.get(ChronoField.DAY_OF_MONTH);
int dayOfWeek = date1.get(ChronoField.DAY_OF_WEEK); LocalTime:获取时间
LocalTime time1 = LocalTime.of(12, 12, 12);
LocalTime time2 = LocalTime.now();
int hour = time1.get(ChronoField.HOUR_OF_DAY);
int minute = time1.get(ChronoField.MINUTE_OF_HOUR);
int second = time1.get(ChronoField.SECOND_OF_MINUTE);
int h = time2.getHour();
int m = time2.getMinute();
int s = time2.getSecond();
int n = time2.getNano(); 还可以把字符串转为LocalDate和LocalTime:
LocalDate date = LocalDate.parse("2017-01-12");
LocalTime time = LocalTime.parse("11:11:11");
parse方法还可以传递DateTimeFormatter参数。
LocalDateTime:日期和时间
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime dateTime1 = LocalDateTime.now();
LocalDateTime dateTime2 = LocalDateTime.of(date, time);
LocalDateTime dateTime3 = LocalDateTime.parse("2017-08-11 11:11:11");
LocalDateTime dateTime4 = date.atTime(time);
LocalDateTime dateTime5 = time.atDate(date);
LocalDate date1 = dateTime1.toLocalDate();
LocalTime time1 = dateTime1.toLocalTime(); Instant类表示的是1970-1-1到现在的秒数。
Instant instant = Instant.now();
Instant instant2 = Instant.ofEpochMilli(System.currentTimeMillis());
Instant instant3 = Instant.ofEpochSecond(instant.getEpochSecond());
Instant instant4 = Instant.parse("2017-01-01T11:11:11.12Z"); Duration和Period是用来计算间隔的。Duration一般用于计算秒与纳秒之间的间隔。Period用于计算日期间隔。
Duration duration1 = Duration.between(LocalTime.of(11, 11), LocalTime.of(11, 12));
Duration duration2 = Duration.ofMinutes(3);
Duration duration3 = Duration.parse("PT15M");//15分钟
Period period1 = Period.between(LocalDate.of(2017, 7, 1), LocalDate.now());
Period period2 = Period.of(1, 1, 1);
Period period3 = Period.ofDays(2);
Period period4 = Period.parse("P-6M3D");//-6月+3天 上面的类都是不可改变对象,和String对象一样。每次修改操作都会生成一个新的对象。
日期时间修改:
LocalDate date = LocalDate.now();
date = date.withDayOfMonth(3);<!--day变为3-->
date = date.with(ChronoField.DAY_OF_MONTH, 11);<!--day为11-->
date = date.minusDays(5);<!--当前日期减去5天-->
date = date.plusDays(12);<!--当前日期加上12天--><!--其他类都有类似操作--> 用TemporalAdjusters类的方法操作日期时间,可以更加灵活的处理日期时间。例如把日期变为这个月的第一天,或者把日期变为下一个星期4
LocalDate date = LocalDate.now();
date = date.with(TemporalAdjusters.lastDayOfMonth());
date = date.with(TemporalAdjusters.dayOfWeekInMonth(7, DayOfWeek.SATURDAY)); 时间日期格式化:
LocalDate date = LocalDate.now();
String s1 = date.format(DateTimeFormatter.BASIC_ISO_DATE);//20170811
String s2 = date.format(DateTimeFormatter.ISO_LOCAL_DATE);//2017-08-11
String s3 = date.format(DateTimeFormatter.ofPattern("dd/MM/yyyy"));//11/08/2017
LocalDate date2 = LocalDate.parse("11/08/2017", DateTimeFormatter.ofPattern("dd/MM/yyyy"));
相关文章推荐
- java8__新api时间日期
- Java 8时间和日期API 20例
- Java8新特性整理之新的时间和日期API(终章)
- Java中日期时间API小结
- java8时间API
- [Java] Tread.sleep() 电子表显示时期和时间
- JAVA8新特性 - 时间API
- java8时间api和mysql集成的坑
- Java中的时间日期API知识点总结
- 嵌入式软件开发培训笔记——java第五天(API——math/string/集合/日期时间以及java线程)
- Java8--Lambda表达式、Stream和时间API
- 解决Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题
- Java 8中对日期和时间的处理(使用API处理)
- Java 8 新特性-菜鸟教程 (8) -Java 8 日期时间 API
- Java8新特性之:新的日期和时间API
- 用Java Timer API进行时间调度开发的相关注意点
- 码讲——java日期时间API
- 《Java in Action》-1 第12章 新的日期和时间API
- Java 8中时间 API 初探
- Java基础[6]时间API