时间格式化

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.now();
String localDateTimeStr = formatter.format(localDateTime);
System.out.println(localDateTimeStr); String str = "2008年08月23日 23:59:59";
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
LocalDateTime localDateTime2 = LocalDateTime.parse(str,formatter2);
System.out.println(localDateTime2);

LocalDate:年月日


LocalDate today = LocalDate.now(); // -> 2019-01-31
System.out.println("取当前日期: "+today); LocalDate crischristmas = LocalDate.of(2018, 12, 25); // -> 2018-12-25
System.out.println("根据年月日取日期,12月就是12: "+crischristmas); LocalDate endOfFeb = LocalDate.parse("2018-12-25"); // 严格按照ISO yyyy-MM-dd验证,02写成2都不行,当然也有一个重载方法允许自己定义格式
System.out.println("根据字符串取: "+endOfFeb); LocalDate oneToday = today.plus(1, ChronoUnit.WEEKS); // ->2019-02-07
System.out.println("如何获取1周后的日期: "+oneToday); LocalDate previousYear = today.minus(1, ChronoUnit.YEARS);
System.out.println("一年前的日期: "+previousYear); LocalDate firstDayOfThisMonth = today.with(TemporalAdjusters.firstDayOfMonth()); // 2019-01-01
System.out.println("取本月第1天: "+firstDayOfThisMonth); LocalDate secondDayOfThisMonth = today.withDayOfMonth(2); // 2019-01-02
System.out.println("取本月第2天: "+secondDayOfThisMonth); LocalDate lastDayOfThisMonth = today.with(TemporalAdjusters.lastDayOfMonth()); // 2019-01-31
System.out.println("取本月最后一天,再也不用计算是28,29,30还是31: "+lastDayOfThisMonth); LocalDate firstDay = lastDayOfThisMonth.plusDays(1); // 变成了2019-02-01
System.out.println("取下一天: "+firstDay); LocalDate nextSuday = today.with(DayOfWeek.SUNDAY);
System.out.println("下一个周日: "+nextSuday); LocalDate nextSaturday = today.with(DayOfWeek.SATURDAY);
System.out.println("下一个周六: "+nextSaturday); LocalDate firstMonday = LocalDate.parse("2019-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)); // 2019-01-07
System.out.println("取2019年1月第一个周一 "+firstMonday); //对比日期是否为同一天(生日对比)
LocalDate birthday = LocalDate.of(1990, 10, 12);
MonthDay birthdayMd = MonthDay.of(birthday.getMonth(), birthday.getDayOfMonth());
MonthDay today = MonthDay.from(LocalDate.of(2019, 10, 12));
System.out.println(today.equals(birthdayMd));

LocalTime:时分秒毫秒


LocalTime now = LocalTime.now(); // 11:09:09.240
System.out.println("时间包含毫秒: "+now); LocalTime now1 = LocalTime.now().withNano(0); // 11:09:09
System.out.println("时间包含不毫秒"+now1); LocalTime zero = LocalTime.of(1, 2, 1); // 00:00:00
System.out.println("构造时间: "+zero); LocalTime mid = LocalTime.parse("12:00:00"); // 12:00:00
System.out.println("字符串转时间: "+mid); LocalTime twoHour = LocalTime.now().plusHours(2);
System.out.println("添加2小时: "+twoHour);

LocalDateTime:年月日时分秒

LocalDateTime ldt1 = LocalDateTime.of(2017, Month.JANUARY, 4, 17, 23, 52);
System.out.println("创建日期时间方法一: "+ldt1);
LocalDate localDate = LocalDate.of(2017, Month.JANUARY, 4);
LocalTime localTime = LocalTime.of(17, 23, 52);
LocalDateTime ldt2 = localDate.atTime(localTime);
System.out.println("创建日期时间方法二: "+ldt2);

Instant:纳秒时间戳

LocalDate date = ldt1.toLocalDate();
System.out.println("日期时间获取日期"+date);
LocalTime time = ldt1.toLocalTime();
System.out.println("日期时间获取时间"+time); Instant instantNow =Instant.now();
System.out.println("时间戳(精确到纳秒)nanos表示纳秒部分 : "+instantNow.toEpochMilli()+instantNow.getNano()); Instant instant = Instant.ofEpochSecond(120, 100000);
System.out.println("时间戳(精确到纳秒) : "+instant);

Duration:两时间间隔

LocalDateTime from = LocalDateTime.of(2019, Month.JANUARY, 5, 10, 7, 0);    // 2019-01-05 10:07:00
LocalDateTime to = LocalDateTime.of(2019, Month.FEBRUARY, 5, 10, 7, 0); // 2019-02-05 10:07:00
Duration duration = Duration.between(from, to); // 表示从 2019-01-05 10:07:00 到 2019-02-05 10:07:00 这段时间 long days = duration.toDays();
System.out.println("这段时间的总天数"+days);
long hours = duration.toHours();
System.out.println("这段时间的小时数"+hours);
long minutes = duration.toMinutes();
System.out.println("这段时间的分钟数"+minutes);
long seconds = duration.getSeconds();
System.out.println("这段时间的秒数"+seconds);
long milliSeconds = duration.toMillis();
System.out.println("这段时间的毫秒数"+milliSeconds);
long nanoSeconds = duration.toNanos();
System.out.println("这段时间的纳秒数"+nanoSeconds);

Duration:处理两个时间之间的差值

Duration duration1 = Duration.of(5, ChronoUnit.DAYS);       // 5天
System.out.println("这段时间的分钟数"+duration1.toMinutes());
Duration duration2 = Duration.of(1000, ChronoUnit.MILLIS); // 1000毫秒
System.out.println("这段时间的分钟数"+duration2.toMinutes());

ZonedDateTime:引入地区

ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println(zonedDateTime); Instant instant = Instant.now();
ZoneId zoneId1 = ZoneId.of("GMT");
ZonedDateTime zonedDateTime2 = ZonedDateTime.ofInstant(instant,zoneId1);
System.out.println(zonedDateTime2);

java JDK8 时间处理的更多相关文章

  1. 全面解析Java日期时间API

    时区 GMT(Greenwich Mean Time):格林尼治时间,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间. UTC(Universal Time ...

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

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

  3. Java 进行时间处理

    Java 进行时间处理 一.Calendar (1).Calender介绍 Calendar的中文翻译是日历,实际上,在历史上有着许多种计时的方法.所以为了计时的统一,必需指定一个日历的选择.那现在最 ...

  4. Java实现时间动态显示方法汇总

    这篇文章主要介绍了Java实现时间动态显示方法汇总,很实用的功能,需要的朋友可以参考下 本文所述实例可以实现Java在界面上动态的显示时间.具体实现方法汇总如下: 1.方法一 用TimerTask: ...

  5. Java 对时间和日期的相关处理

    1. 获取当前系统时间和日期并格式化输出 import java.util.Date; import java.text.SimpleDateFormat; public class NowStrin ...

  6. java JDK8 学习笔记——助教学习博客汇总

    java JDK8 学习笔记——助教学习博客汇总 1-6章 (by肖昱) Java学习笔记第一章——Java平台概论 Java学习笔记第二章——从JDK到IDEJava学习笔记第三章——基础语法Jav ...

  7. java JDK8 学习笔记——第16章 整合数据库

    第十六章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API中的接口会有数据库厂商操作,称为JDBC驱动程 ...

  8. java中时间的获取(二)

    java中时间的获取2 /** * 获取数据库操作记录时间 */ public static String getOpreateDbTime() { Calendar c = Calendar.get ...

  9. Java 日期时间

    Java 日期时间 标签 : Java基础 Date java.util.Date对象表示一个精确到毫秒的瞬间; 但由于Date从JDK1.0起就开始存在了,历史悠久,而且功能强大(既包含日期,也包含 ...

随机推荐

  1. [cf1495F]Squares

    令$nex_{i}=\min_{i<j,p_{i}<p_{j}}j$(即$i$的第2类边),若不存在此类$j$则$nex_{i}=n+1$ 建一棵树,其以0为根,且$1\le i\le n ...

  2. myeclipse maven web打包

    1.在当前的项目pom.xml的文件上,如下图所示:鼠标右键->run As->Maven Build...

  3. 【性能优化】(2)JVM调优

    JVM调优 2019-07-21  12:32:00  by冲冲 1.

  4. 力扣 - 剑指 Offer 42. 连续子数组的最大和

    题目 剑指 Offer 42. 连续子数组的最大和 思路1(分析数组的规律) 我们可以从头到尾逐个累加,若之前的累加和小于0,那就从丢弃之前的累加,从当前开始重新累加,同时在遍历过程中比较记录下最大值 ...

  5. 什么是CLI、GUI

    就是命令行界面command-line interface,也有人称之为字符用户界面(CUI). 通常认为,命令行界面(CLI)没有图形用户界面(GUI)那么方便用户操作. 因为,命令行界面的软件通常 ...

  6. 第41篇-JNIEnv与JavaVM的初始化

    JavaVM和JNIEnv的初始化和JVM各模块的初始化都是在JNI_CreateJavaVM()函数中完成.这一篇将详细介绍JavaVM和JNIEnv的初始化过程. 1.初始化JavaVM Java ...

  7. Codeforces 848C Goodbye Souvenir(CDQ 分治)

    题面传送门 考虑记录每个点的前驱 \(pre_x\),显然答案为 \(\sum\limits_{i=l}^{r} i-pre_i (pre_i \geq l)\) 我们建立一个平面直角坐标系,\(x\ ...

  8. c++STL容器之string容器

    本质:string是c++风格的字符串,而string本质上是一个类 string和char*的区别: char*是一个指针: string是一个类,类内部封装了char*,管理这个字符串,是一个ch ...

  9. 【豆科基因组】鹰嘴豆Chickpea (Cicer arietinum L.)429个自然群体重测序2019NG

    目录 一.来源 二.结果 材料测序.变异检测.群体结构和LD衰减 驯化后经历选择的候选基因组区域 起源中心.迁移路线和多样性 GWAS 一.来源 Resequencing of 429 chickpe ...

  10. Matlab指针

    Matlab指针 第一印象貌似是Matlab中不存在指针,所有变量与函数的赋值都是按值传递的,不会对参数进行修改.其实Matlab提供了handle类作为指针代替品.只要我们利用handle子类,就可 ...