前言

java 8的时间已经能够满足日常的使用,也方便理解。joda-time作为一个有优秀的时间组件也不得不告知使用者在java 8以后使用自带的时间

LocalDateTime以及ZonedDateTime使用

这两个时间的formate方法是返回DateTimeFormatter后的String

静态方法parse是返回对应的类型

例子如下

import lombok.extern.slf4j.Slf4j;

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter; @Slf4j
public class Java8DateTimeTest {
/**
* 日期格式转换yyyy-MM-dd‘T‘HH:mm:ss.SSSXXX TO yyyy-MM-dd HH:mm:ss
*
* @throws ParseException
*/
//public static DateTimeFormatter utcformat = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
public static DateTimeFormatter utcformat2 = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); //public static DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS");
public static DateTimeFormatter generalformat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); public static void main(String[] args) {
String utctimeStr = "2017-06-15T10:02:02.000+08:00";
String generalTime = "2017-06-15 00:02:02";
ZoneId shanghaiZoneId = ZoneId.of("Asia/Shanghai");
//时区时间变为iso8061时间
log.info("generalTime time {} convert jdk8 time {}", generalTime, LocalDateTime.parse(generalTime, generalformat).toString()); //iso8061时间转变为携带上海时区的时间
LocalDateTime localDateTime = LocalDateTime.parse(generalTime, generalformat);
//2017-06-15T00:02:02
log.info("localDateTime {}", localDateTime);
//2019-11-19T16:31:31.758+0800
ZonedDateTime zonedDateTime1 = localDateTime.atZone(shanghaiZoneId);
//2017-06-15T00:02:02.000+08:00
log.info("##zonedDateTime1 {}", zonedDateTime1.format(utcformat2)); //携带时区时间转变为 yyyy-MM-dd HH:mm:ss格式
//2017-06-15T10:02:02+08:00
ZonedDateTime zonedDateTime2 = ZonedDateTime.parse(utctimeStr);
//###2017-06-15 10:02:02
log.info("##zonedDateTime2 to generalformat {}", zonedDateTime2.format(generalformat));
} }

LocalDate

LocalDate是用作年月日的使用很方便

import lombok.Data;
import lombok.extern.slf4j.Slf4j; import java.io.Serializable;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors; @Data
@Slf4j
public class Java8LocalDateTest implements Serializable {
private static final long serialVersionUID = 8589835559483231840L;
private String date; //get set..
//因为格式是yymmdd所以只能是LocalDate,否则会抛出异常
public static LocalDate parseStr2LocalDate(String datestr, String format) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format);
LocalDate localDate;
localDate = LocalDate.parse(datestr, dateTimeFormatter);
return localDate;
} public static void main(String[] args) { List<Java8LocalDateTest> list = new ArrayList<>();
Java8LocalDateTest on1 = new Java8LocalDateTest();
on1.setDate("2018-05-17"); Java8LocalDateTest on2 = new Java8LocalDateTest();
on2.setDate("2018-05-16"); Java8LocalDateTest on3 = new Java8LocalDateTest();
on3.setDate("2018-05-18"); Java8LocalDateTest on4 = new Java8LocalDateTest();
on4.setDate("2018-05-15"); list.add(on1);
list.add(on2);
list.add(on3);
list.add(on4); //升序与降序
/*steam()是Collections方法,返回的是Stream对象流*/ /*Stream<T> sorted(Comparator<? super T> comparator)
返回由该流的元素组成的流,根据提供的Comparator进行排序。
对于有序流,排序稳定。 对于无序的流,不能保证稳定性。*/ /* 以下将将字符串累加到ArrayList中:
List<String> asList = stringStream.collect(Collectors.toList());*/ List<Java8LocalDateTest> collect = list.stream().sorted(new Comparator<Java8LocalDateTest>() {
@Override
public int compare(Java8LocalDateTest o1, Java8LocalDateTest o2) {
LocalDate d1 = parseStr2LocalDate(o1.getDate(), "yyyy-MM-dd");
LocalDate d2 = parseStr2LocalDate(o2.getDate(), "yyyy-MM-dd");
//return d1.compareTo(d2);升序
return d2.compareTo(d1);
}
}).collect(Collectors.toList()); for (Java8LocalDateTest java8LocalDateTest : collect) {
log.info("object = {}", java8LocalDateTest.toString());
}
}
} /*输出
object = Java8LocalDateTest(date=2018-05-18)
object = Java8LocalDateTest(date=2018-05-17)
object = Java8LocalDateTest(date=2018-05-16)
object = Java8LocalDateTest(date=2018-05-15) */

java 8时间使用LocalDateTime,ZonedDateTime,LocalDate的更多相关文章

  1. Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题【转】

    Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题 http://blog.didispace.com/Spring-Boot-And-Feign- ...

  2. Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题

    LocalDate.LocalTime.LocalDateTime是Java 8开始提供的时间日期API,主要用来优化Java 8以前对于时间日期的处理操作.然而,我们在使用Spring Boot或使 ...

  3. Java中String、LocalDateTime、LocalDate、Date互转

    String 转LocalDate和LocalDateTime LocalDate startDate = LocalDate.parse("2019-12-05", DateTi ...

  4. Java日期时间API系列19-----Jdk8中java.time包中的新的日期时间API类,ZonedDateTime与ZoneId和LocalDateTime的关系,ZonedDateTime格式化和时区转换等。

    通过Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类中时间范围示意图:可以很清晰的看出ZonedDateTime相当于LocalDateTime+ZoneI ...

  5. Java日期时间API系列13-----Jdk8中java.time包中的新的日期时间API类,时间类转换,Date转LocalDateTime,LocalDateTime转Date等

    从前面的系列博客中可以看出Jdk8中java.time包中的新的日期时间API类设计的很好,但Date由于使用仍非常广泛,这就涉及到Date转LocalDateTime,LocalDateTime转D ...

  6. Java日期时间API系列8-----Jdk8中java.time包中的新的日期时间API类的LocalDate源码分析

    目录 0.前言 1.TemporalAccessor源码 2.Temporal源码 3.TemporalAdjuster源码 4.ChronoLocalDate源码 5.LocalDate源码 6.总 ...

  7. Java 8 中 Date与LocalDateTime、LocalDate、LocalTime互转

    Java 8中 java.util.Date 类新增了两个方法,分别是from(Instant instant)和toInstant()方法 // Obtains an instance of Dat ...

  8. Java 8 时间日期库的20个使用示例

    java 8是如何处理时间及日期的 有人问我学习一个新库的最佳途径是什么?我的回答是,就是在实际项目中那样去使用它.在一个真实的项目中会有各种各样的需求,这会促使开发人员去探索和研究这个新库.简言之, ...

  9. Java 8时间和日期API 20例

    本文由 ImportNew - Sandy 翻译自 javarevisited.欢迎加入翻译小组.转载请见文末要求. 伴随lambda表达式.streams以及一系列小优化,Java 8 推出了全新的 ...

随机推荐

  1. Eclipse导入git上的maven web项目 以及部署成功运行

      在公司开发的时候都是用maven 以及git环境 开发的环境,那么我们初学者怎么将公司的项目成功导入到eclipse中,并且成功运行那???下面的教程就可以告诉大家~ (ps:第二步可能是大家会遇 ...

  2. java spring-boot 服务器启动参数设置

    java -jar -Xms5866m -Xmx5866m -Xss256k -Xloggc:/home/work/spring-boot/logs/gc-%t.log -XX:+UseGCLogFi ...

  3. Codeforces Gym 102361A Angle Beats CCPC2019秦皇岛A题 题解

    题目链接:https://codeforces.com/gym/102361/problem/A 题意:给定二维平面上的\(n\)个点,\(q\)次询问,每次加入一个点,询问平面上有几个包含该点的直角 ...

  4. sqli-libs(5-10关)

    Less_5   补充基础知识  1. left(a,b)左侧截取a的前b位,正确则返回1,错误则返回o Select left(database(),1)=’s’; 其中database()为sec ...

  5. wordpress 代码获得菜单的方法

    1.第一种,在function.php中添加这个东东,wp_nav_menu()主要是用这个函数 $menu = 'menu'; $nav_menu = wp_get_nav_menu_object( ...

  6. Linux 服务器作为Nginx web服务器常见优化参数

    内核参数调整cat /etc/sysctl.conf# sysctl settings are defined through files in # /usr/lib/sysctl.d/, /run/ ...

  7. Git储藏工作现场

    假设你现在在dev分支工作,此时你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,你当前工作只进行到一半,还没法提交,预计完成还需1天时间 ...

  8. 吴裕雄 python 神经网络——TensorFlow实现回归模型训练预测MNIST手写数据集

    import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mnist = input_dat ...

  9. BootStrap jQuery 在线cdn

    Bootstrap 3.3.0 js 文件 <script src="http://cdn.bootcss.com/bootstrap/3.3.0/js/bootstrap.min.j ...

  10. AtCoDeer and Election Report

    问题 G: AtCoDeer and Election Report 时间限制: 1 Sec  内存限制: 128 MB[提交] [状态] 题目描述 AtCoDeer the deer is seei ...