Java8时间的简单时间
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时间的简单时间的更多相关文章
- 详解Java8的日期和时间API
详解Java8的日期和时间API 在JDK1.0的时候,Java引入了java.util.Date来处理日期和时间:在JDK1.1的时候又引入了功能更强大的java.util.Calendar,但是C ...
- Qt中利用QTime类来控制时间,这里简单介绍一下QTime的成员函数的用法:
Qt中利用QTime类来控制时间,这里简单介绍一下QTime的成员函数的用法: ------------------------------------------------------------ ...
- Python3.x:简单时间调度Timer(间隔时间执行)
Python3.x:简单时间调度Timer(间隔时间执行) threading模块中的Timer能够帮助实现定时任务,而且是非阻塞的: 代码: import threading import time ...
- 减少Qt编译时间暨简单Qt裁剪
本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息.原文链接.原文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业用途. 谢谢合作.原文链接:减少Qt编译时间暨简单Qt裁剪 编译一 ...
- 都9012了,Java8中的日期时间API你还没有掌握?
一,Java8日期时间API产生的前因后果 1.1 为什么要重新定义一套日期时间API 操作不方便:java中最初的Date不能直接对指定字段进行加减操作也不支持国际化,后来新增了Calendar,但 ...
- linux 时间处理 + 简单写log
1s ==1000ms == 1,000,000us == 1,000,000,000 nanosecond uname -a Linux scott-Z170X 4.15.0-34-generic ...
- Linux系统时间与RTC时间【转】
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=3637782 Linux的RTC驱动相对还是比较简单的,可以将它作为一个普通的字符 ...
- ftp上来显示的时间和系统时间不一致
ftp上来显示的时间和系统时间不一致,是因为默认情况下,vsftpd 是用GMT做为他的时间的,所以和系统的时间可能会不一致 修改也非常简单: vi /etc/vsftpd/vsftpd.conf 在 ...
- Laravel / Lumen 框架修改 创建时间 和 更新时间 对应字段
为避免浪费时间--先上解决方案 在Model中重写 CREATED_AT 和 UPDATED_AT 两个类常量就可以了,这两个常量分别是创建时间和更新时间的字段名. ================= ...
随机推荐
- CSS3使用transition属性实现过渡效果
transition属性目的是让css的一些属性(如background)的以平滑过渡的效果出现.它是一个合并属性,是由以下四个属性组合而成: transition-property:设置应用过渡的C ...
- js 移动端上拉刷新(基于ng1)
//分页下拉 var ajaxScroll = function() { var screenHeight = window.screen.height; $(document).scroll(fun ...
- jQuery效果之jQuery Color animation 色彩动画扩展
jQuery 的动画方法(animate)支持各种属性的过渡,但是默认并不支持色彩的过渡,该插件正是来补足这一点! PS: 该插件支持 RGBA 颜色的过渡,但是请注意,IE8以下的版本不支持 RGB ...
- 个人练习:使用HTML+CSS制作二级菜单
最近一直在学习HTML+CSS,刚看完如果制作下拉菜单部分,就想着做一个练练手. 先上成品图: 就是上面这个效果,横向菜单选项能点击,鼠标放在上面也能展开二级菜单,二级菜单也能点击,点击后就会在底下的 ...
- Android 9.0更新
北京时间2018年8月7日上午,Google 发布了 Android 9.0 操作系统.并宣布系统版本 Android P 被正式命名为代号"Pie". Android 9.0 利 ...
- Caused by:org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type "" available: expected at least 1 bean which qualifies as autowire candidate
项目使用spring, mybatis.因为分了多个模块,所以会这个模块引用了其它模块的现在,结果使用Junit测试的时候发现有两个模块不能自动注入dao和service问题.解决后在此记录一下. 解 ...
- coTurn 使用测试方法
做个记录 1.从"../examples/etc/" 目录拷贝turnserver.conf文件到"/usr/local/etc/"目录 2.修改配置文件 主要 ...
- [翻译]LVM中逻辑卷的最大大小限制
前言: 本文是对这篇博客Maximum Size Of A Logical Volume In LVM的翻译,敬请尊重原创和翻译劳动成果,那些随意转载的大爷们,好歹也自觉注明出处.谢谢! 英文原文地址 ...
- a标签的使用
a标签可以用来跳转页面请求路径,也可以用来绑定事件. 在绑定事件的时候,我需要控制a标签,不让他进行跳转. 这时候我要做的就是限制他,不让他跳转. 只需要在href属性中加入javascript:vo ...
- ALTER添加列后,立即UPDATE该列会报错
SQL 2008 R2 请看语句: ALTER TABLE #t ADD col2 INT UPDATE #t SET col2 = 0 报错:列名'col2'无效. 但如果紧接的是SELECT,一切 ...