package com.java8.date;

import org.junit.Test;

import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.*; public class DateTest { @Test
public void LocalDateTest() { // of方法获取一个指定日期的LocalDate
LocalDate date1 = LocalDate.of(2018, 12, 29);
System.out.println(date1);
System.out.println(date1.getYear());
System.out.println(date1.getMonth()); System.out.println(date1.getMonthValue());
System.out.println(date1.getDayOfMonth());
System.out.println(date1.getDayOfWeek());
System.out.println(date1.getDayOfWeek().getValue());
System.out.println(date1.getDayOfYear()); System.out.println("判断时间前后关系:" + date1.isBefore(date1)); // now 获取当前时间
System.out.println(LocalDate.now()); // 获取指定字段的值
System.out.println(date1.get(ChronoField.YEAR));
System.out.println(date1.get(ChronoField.MONTH_OF_YEAR));
System.out.println(date1.get(ChronoField.DAY_OF_YEAR));
System.out.println(date1.get(ChronoField.DAY_OF_MONTH)); // 多了一些加减运算
//Peroid是针对日期的 , Duration 主要是针对Time的
System.out.println(date1.minus(Period.ofYears(2)));
System.out.println(date1.minus(Period.ofDays(2)));
System.out.println(date1.minus(Period.ofWeeks(2))); Period between = Period.between(date1.minus(Period.ofYears(2)), date1);
Period between2 = Period.between(date1.minus(Period.ofMonths(2)), date1); System.out.println(between.getMonths());
System.out.println(between2.getMonths());
System.out.println("date1.minus(between) = " + date1.minus(between)); LocalDate now = LocalDate.now();
// 替换年
System.out.println(now.withYear(2016)); // 计算某一个时间字段的取值范围
System.out.println(now.range(ChronoField.DAY_OF_MONTH));
} @Test
public void LocalTimeTest() { LocalTime now = LocalTime.now();
System.out.println(now); LocalTime time = LocalTime.of(12, 12);
System.out.println(time); System.out.println(time.isBefore(now));
// 由于是time所以不支持年字段
System.out.println(time.isSupported(ChronoField.YEAR));
System.out.println(time.isSupported(ChronoUnit.YEARS));
System.out.println(time.isSupported(ChronoUnit.HOURS)); System.out.println(time.format(DateTimeFormatter.ofPattern("hh:mm:ss"))); // Duration 主要是针对Time的,Peroid是针对日期的
System.out.println(" time.minus(Duration.ofHours(2)) = " + time.minus(Duration.ofHours(2)));
System.out.println(" time.plus(Duration.ofHours(2)) = " + time.plus(Duration.ofHours(2))); } @Test
public void LocalDateTimeTest() { LocalDateTime dateTime = LocalDateTime.now();
//2018-12-29T13:38:03.212
System.out.println(dateTime.toString()); dateTime = LocalDateTime.of(2018, 12, 29, 12, 12); System.out.println(dateTime); //指定今天的12点12分 LocalDateTime toDay1212 = LocalDate.now().atTime(LocalTime.of(12, 12));
System.out.println(toDay1212); //DateTime转Date
System.out.println(toDay1212.toLocalDate());
//DateTime转Time
System.out.println(toDay1212.toLocalTime());
// 替换某一个时间单位
System.out.println(toDay1212.withHour(14)); } @Test
public void instantTest() { System.out.println(Instant.now());
System.out.println(System.currentTimeMillis());
System.out.println(System.nanoTime());
System.out.println(Instant.now().toEpochMilli());
System.out.println(Instant.now().plusNanos(0));
System.out.println(Instant.now().get(ChronoField.NANO_OF_SECOND)); Period between = Period.between(LocalDate.of(2018, 12, 26), LocalDate.of(2018, 12, 28)); System.out.println(between.getDays());
// between表示是一个间隔,做加减法时候只拿间隔做运算,不考虑具体的起止日期
System.out.println(LocalDateTime.now().plus(between)); } @Test
public void TemporalAdjusterTest() { // 计算当前日期的加一个周五
System.out.println(LocalDate.now().with(TemporalAdjusters.nextOrSame(DayOfWeek.FRIDAY)));
// 计算该月的最后一天
System.out.println(LocalDate.now().with(TemporalAdjusters.lastDayOfMonth()));
// 计算该年的最后一天
System.out.println(LocalDate.now().with(TemporalAdjusters.lastDayOfYear())); } @Test
public void DateTimeFormatterTest() {
//DateTimeFormatter 线程安全线的 ,SimpleDateFormat线程不安全原因是底层公用一个Calender成员
System.out.println(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); } @Test
public void ZoneIdTest() { System.out.println(ZoneId.systemDefault()); }
}

  

Java8时间的简单时间的更多相关文章

  1. 详解Java8的日期和时间API

    详解Java8的日期和时间API 在JDK1.0的时候,Java引入了java.util.Date来处理日期和时间:在JDK1.1的时候又引入了功能更强大的java.util.Calendar,但是C ...

  2. Qt中利用QTime类来控制时间,这里简单介绍一下QTime的成员函数的用法:

    Qt中利用QTime类来控制时间,这里简单介绍一下QTime的成员函数的用法: ------------------------------------------------------------ ...

  3. Python3.x:简单时间调度Timer(间隔时间执行)

    Python3.x:简单时间调度Timer(间隔时间执行) threading模块中的Timer能够帮助实现定时任务,而且是非阻塞的: 代码: import threading import time ...

  4. 减少Qt编译时间暨简单Qt裁剪

    本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息.原文链接.原文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业用途. 谢谢合作.原文链接:减少Qt编译时间暨简单Qt裁剪 编译一 ...

  5. 都9012了,Java8中的日期时间API你还没有掌握?

    一,Java8日期时间API产生的前因后果 1.1 为什么要重新定义一套日期时间API 操作不方便:java中最初的Date不能直接对指定字段进行加减操作也不支持国际化,后来新增了Calendar,但 ...

  6. linux 时间处理 + 简单写log

    1s ==1000ms == 1,000,000us == 1,000,000,000 nanosecond uname -a Linux scott-Z170X 4.15.0-34-generic ...

  7. Linux系统时间与RTC时间【转】

    http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=3637782 Linux的RTC驱动相对还是比较简单的,可以将它作为一个普通的字符 ...

  8. ftp上来显示的时间和系统时间不一致

    ftp上来显示的时间和系统时间不一致,是因为默认情况下,vsftpd 是用GMT做为他的时间的,所以和系统的时间可能会不一致 修改也非常简单: vi /etc/vsftpd/vsftpd.conf 在 ...

  9. Laravel / Lumen 框架修改 创建时间 和 更新时间 对应字段

    为避免浪费时间--先上解决方案 在Model中重写 CREATED_AT 和 UPDATED_AT 两个类常量就可以了,这两个常量分别是创建时间和更新时间的字段名. ================= ...

随机推荐

  1. Tri Tiling(hdu1143)

    Tri Tiling Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  2. HTML标签笔记

    换行符:<br/> 首部: <!DOCTYPE>: 说明html文档使用的标准, 在HTML5中仅为 <!DOCTYPE html>1.头标签 <head&g ...

  3. java package(包)的用法

    一般来说都用eclipse自动化图形工具搞定,我用的是ubuntu,所以需要自己打包引入. 什么是包? 这是对java源代码的组织和管理的一种方式,比如:当操作系统某个目录的文件非常多的时候,我们一般 ...

  4. ajax知识点

    什么是AJAX? AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. ...

  5. php通过某个日期段的周几,获取选中周几对应的日期

    最近在做课程表的项目里用到了这个,有个日期段,选择好周几之后,想获取在这个日期段内选中的星期对应的日期,如下图,代码如下 function getDateByWeek($data) { $start_ ...

  6. java方法中,传参是传值还是传址问题(对比C语言、C#和C++)

    问题引出: 编写一个简单的交换值的小程序,如果我们只是简单地定义一个交换函数接收两个数,在函数内部定义一个中间变量完成交换.那么当我们把a,b两个实参传给这个函数时,往往得不到预期的结果.这是为什么呢 ...

  7. Mycat 中间件配置初探与入门操作

    Mycat中间件配置初探与入门操作 By:授客 QQ:1033553122 实践环境 Mycat-server-1.5.1-RELEASE-20161130213509-win.tar.gz 下载地址 ...

  8. Windows 批处理获取某路径下最新创建的文件的名称

    批处理获取某路径下最新创建的文件的名称 by:授客 QQ:1033553122 echo off setlocal enabledelayedexpansion rem 设置文件所在目录 set sr ...

  9. DES数据解密

    /// <summary> /// DES数据解密 /// </summary> /// <param name="targetValue">& ...

  10. 「Android」 Surface分析

    本篇针对Surface模块进行分析,从Java层的Activity创建开始,到ViewRoot.WindowsManagerService,再到JNI层和Native层. 首先推荐一个Android源 ...