前言

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) */

最新文章

  1. OpenCv图像裁剪指点区域_roi
  2. 基本排序(二)插入排序(直接插入、Shell、折半)
  3. D. Game with Strings
  4. (一)kafka修改topic分区的位置
  5. Symfony2 通过命令行调用控制器
  6. mysql linux备份shell
  7. HashSet与HashMap、Hashtable
  8. 微吧里的各种margin负值
  9. 设置TextView文字居中
  10. Andrdoid中相应用程序的行为拦截实现方式之----从Java层进行拦截
  11. 【quickhybrid】H5和原生的职责划分
  12. hadoop学习大纲
  13. 外观模式facade
  14. linux下open-vswitch安装卸载操作
  15. Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring
  16. MFC编程汇总
  17. Docker 系列一(概念原理和安装).
  18. python---wsgiref初探
  19. JSON和JSONP详解
  20. 《Unix&amp;Linux大学教程》学习笔记6——Unix文件系统

热门文章

  1. 每个Java开发人员都应该知道的4个Spring注解
  2. 微信小程序云函数中有以下未安装的依赖,如果未安装即全量上传
  3. php-cp(php连接池)扩展的安装
  4. 浅析PHP页面局部刷新功能的实现小结(转)
  5. Spring Security 源码分析 --- WebSecurity
  6. 【PAT甲级】1072 Gas Station (30 分)(Dijkstra)
  7. 5种JVM调优配置方法概览!!!
  8. @ModelAttribute与@RequestBody的区别
  9. 17 JavaScript Cookies
  10. ES5-bind用法及与以前的apply和call