`
cakin24
  • 浏览: 1396361 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Java 8新增日期时间新成员

    博客分类:
  • java
 
阅读更多

Java 8的java.time包

Java 8专门新增了一个java.time包,该包下包含了如下常用的类:Clock、Duration、LocalDate、LocalTime、LocalDateTime、MonthDay、Year、YearMonth、DayOfWeek、Month。

 

代码示例

import java.time.*;


public class NewDatePackageTest
{
	public static void main(String[] args)
	{
		// -----下面是关于Clock的用法-----
		// 获取当前Clock
		Clock clock = Clock.systemUTC();
		// 通过Clock获取当前时刻
		System.out.println("当前时刻为:" + clock.instant());
		// 获取clock对应的毫秒数,与System.currentTimeMillis()输出相同
		System.out.println(clock.millis());
		System.out.println(System.currentTimeMillis());
		// -----下面是关于Duration的用法-----
		Duration d = Duration.ofSeconds(6000);
		System.out.println("6000秒相当于" + d.toMinutes() + "分");
		System.out.println("6000秒相当于" + d.toHours() + "小时");
		System.out.println("6000秒相当于" + d.toDays() + "天");
		// 在clock基础上增加6000秒,返回新的Clock
		Clock clock2 = Clock.offset(clock, d);
		// 可看到clock2与clock1相差1小时40分
		System.out.println("当前时刻加6000秒为:" +clock2.instant());
		// -----下面是关于Instant的用法-----
		// 获取当前时间
		Instant instant = Instant.now();
		System.out.println(instant);
		// instant添加6000秒(即100分钟),返回新的Instant
		Instant instant2 = instant.plusSeconds(6000);
		System.out.println(instant2);
		// 根据字符串中解析Instant对象
		Instant instant3 = Instant.parse("2014-02-23T10:12:35.342Z");
		System.out.println(instant3);
		// 在instant3的基础上添加5小时4分钟
		Instant instant4 = instant3.plus(Duration
			.ofHours(5).plusMinutes(4));
		System.out.println(instant4);
		// 获取instant4的5天以前的时刻
		Instant instant5 = instant4.minus(Duration.ofDays(5));
		System.out.println(instant5);
		// -----下面是关于LocalDate的用法-----
		LocalDate localDate = LocalDate.now();
		System.out.println(localDate);
		// 获得2014年的第146天
		localDate = LocalDate.ofYearDay(2014, 146);
		System.out.println(localDate); // 2014-05-26
		// 设置为2014年5月21日
		localDate = LocalDate.of(2014, Month.MAY, 21);
		System.out.println(localDate); // 2014-05-21
		// -----下面是关于LocalTime的用法-----
		// 获取当前时间
		LocalTime localTime = LocalTime.now();
		// 设置为22点33分
		localTime = LocalTime.of(22, 33);
		System.out.println(localTime); // 22:33
		// 返回一天中的第5503秒
		localTime = LocalTime.ofSecondOfDay(5503);
		System.out.println(localTime); // 01:31:43
		// -----下面是关于localDateTime的用法-----
		// 获取当前日期、时间
		LocalDateTime localDateTime = LocalDateTime.now();
		// 当前日期、时间加上25小时3分钟
		LocalDateTime future = localDateTime.plusHours(25).plusMinutes(3);
		System.out.println("当前日期、时间的25小时3分之后:" + future);
		// 下面是关于Year、YearMonth、MonthDay的用法示例-----
		Year year = Year.now(); // 获取当前的年份
		System.out.println("当前年份:" + year); // 输出当前年份
		year = year.plusYears(5); // 当前年份再加5年
		System.out.println("当前年份再过5年:" + year);
		// 根据指定月份获取YearMonth
		YearMonth ym = year.atMonth(10);
		System.out.println("year年10月:" + ym); // 输出XXXX-10,XXXX代表当前年份
		// 当前年月再加5年,减3个月
		ym = ym.plusYears(5).minusMonths(3);
		System.out.println("year年10月再加5年、减3个月:" + ym);
		MonthDay md = MonthDay.now();
		System.out.println("当前月日:" + md); // 输出--XX-XX,代表几月几日
		// 设置为5月23日
		MonthDay md2 = md.with(Month.MAY).withDayOfMonth(23);
		System.out.println("5月23日为:" + md2); // 输出--05-23
	}
}

 

运行结果

E:\test\Java\First2\test\src>java NewDatePackageTest
当前时刻为:2016-09-02T10:35:01.147Z
1472812502102
1472812502103
6000秒相当于100分
6000秒相当于1小时
6000秒相当于0天
当前时刻加6000秒为:2016-09-02T12:15:02.113Z
2016-09-02T10:35:02.115Z
2016-09-02T12:15:02.115Z
2014-02-23T10:12:35.342Z
2014-02-23T15:16:35.342Z
2014-02-18T15:16:35.342Z
2016-09-02
2014-05-26
2014-05-21
22:33
01:31:43
当前日期、时间的25小时3分之后:2016-09-03T19:38:02.335
当前年份:2016
当前年份再过5年:2021
year年10月:2021-10
year年10月再加5年、减3个月:2026-07
当前月日:--09-02
5月23日为:--05-23

 

代码说明

该代码就是这些常见类的用法举例,这些API和他们的用法都比较简单,程序的注释也很清楚,希望对大家有所帮助。

0
1
分享到:
评论

相关推荐

    java基础笔记,多线程、反射、java8

    4. **日期和时间API**:新的java.time包取代了过时的java.util.Date和Calendar,提供了更强大的日期和时间处理功能。 5. **默认方法**:接口中可以定义具有实现的方法,使得接口扩展更加灵活,避免破坏现有的实现。 ...

    Java JDK1.8中文API文档

    2. **流(Stream) API**:Stream API是Java 8的新成员,它提供了对集合操作的新方法,如filter、map和reduce等,使得对大量数据的处理更加高效和简洁。流可以用于顺序和并行处理,适合大规模数据操作和并行计算。 3....

    Java_1.8_API文档,中文版本

    6. **日期时间API**:Java 8的`java.time`包替代了过时的`java.util.Date`和`java.util.Calendar`,提供了更直观和强大的日期、时间和时区处理能力,如`LocalDate`, `LocalTime`, `LocalDateTime`等。 7. **默认...

    JAVA DVD出借管理

    在`DVDMgr`类中,`add`方法允许用户新增DVD到系统,通过遍历`name`数组找到第一个未使用的空位来插入新的DVD信息。`search`方法用于查找特定的DVD,但这里只展示了方法的声明,没有给出实现细节。其他如`list`、`...

    jdk-8u121-windows-x64.rar

    2. **Stream API**:Stream API是Java 8的新成员,它提供了一种处理集合的新方式,允许进行声明式、函数式的数据操作。Stream API支持并行操作,能充分利用多核处理器的优势,提高程序性能。 3. **方法引用和构造器...

    Java-SE 罗召勇的pdf

    - Java 1.8(Java 8):引入Lambda表达式、函数式接口、日期/时间API等重大更新。 6. **基本语法** - 类定义:`public class HelloWorld`,公共类`HelloWorld`。 - 主方法:`public static void main(String[] ...

    java 面试文档 总结

    17. **JDK新特性**:了解从Java 8到最新版本的新增特性,如Lambda表达式、Stream API、Optional、日期时间API等。 18. **微服务架构**:理解微服务的基本概念,如服务发现、熔断、限流、降级等。 19. **容器技术**...

    Java工程师必知必会.docx

    23. 使用DateFormat格式化日期、时间 24. 使用SimpleDateFormat格式化日期 Java集合概: 1. Collection和Iterator接口 2. Set集合 3. List集合 4. Queue集合 5. Map 6. Hashset和Hashmap的性能选项 7. 操作集合的...

    良葛格Java JDK 5.0学习笔记ch03

    虽然Java 8的日期时间API更完善,但在JDK 5中已经开始了初步改进,如`java.util.Calendar`和`java.util.SimpleDateFormat`的增强。 良葛格的Java JDK 5.0学习笔记详细解析了这些特性,对理解Java编程语言的基础和...

    The Java EE 6 Tutorial: Basic Concepts, 4th Edition

    - **出版日期**:2010年8月 - **语言**:英语 - **ISBN-10**:0137081855 - **ISBN-13**:978-0137081851 - **文件大小**:17.7 MiB - **下载次数**:3,828次 通过以上介绍可以看出,《Java EE 6 Tutorial: Basic ...

    阿里巴巴Java开发手册泰山版-2020.04.22最新发布.docx

    - **日期时间规约**:增加了五项关于日期时间处理的新规则,这些规则可以帮助开发者正确地处理时间差异、避免常见的日期计算错误,提高程序的时间敏感度。 - **SQL表别名规约**:引入了两条新的规定来优化SQL查询...

    java jdk5.0学习笔记——良葛格

    13. **日期和时间API**:虽然Java 8引入了更完善的日期和时间API,但在JDK 5.0中,java.util.Calendar和java.text.SimpleDateFormat已经比旧的Date类更加强大和灵活。 14. **反射改进**:对反射API进行了增强,提供...

    ext scheduler -java

    它可以创建、编辑和删除事件,支持多资源分配,以及自定义的时间段和日期范围。它以甘特图的形式展示任务,使用户可以清晰地看到任务间的关联和进度。 【Spring MVC 3.1】:Spring MVC是Spring框架的一个模块,专为...

    JDK API 1.8中文文档chm格式

    4. **日期和时间API的改进**:Java 8引入了`java.time`包,提供了更强大、更易于使用的日期和时间处理功能,替代了旧的`java.util.Date`和`java.util.Calendar`。 5. **Stream API**:提供了处理集合的新方式,支持...

    JDK1.8版本Windows64位

    2. **Stream API**:Stream API是Java 8的新成员,提供了一种新的处理数据的方式,如集合、数组等。它可以进行序列化操作,支持并行处理,使大规模数据处理更加高效。 3. **方法引用来替代匿名内部类**:在JDK 1.8...

    java面试笔记整理,包含java,redis,kafka等

    - **时间日期API:** 新增了更强大的时间日期处理类。 #### 四十三、序列化与反序列化 - **序列化:** 将对象的状态信息转换为可以存储或传输的形式。 - **反序列化:** 从序列化的形式恢复为对象。 #### 四十四、...

    java 初学者实验

    - 修改测试程序`TestVehicle.java`,测试新的`Vehicle`类功能。 - **Student类的创建与使用:** - 定义一个`Student`类,包含学号、姓名和成绩等属性。 - 实现`Student`类的相关方法,如获取和设置学号、姓名等。...

    JavaSE上机练习11.zip

    15. **日期时间API**:Java 8改进了日期和时间的处理,提供了`java.time`包。Test3可能有使用新的日期时间API的练习。 以上是根据题目信息推测的JavaSE相关知识点,具体Test3文件中的内容需解压查看。这些知识点是...

    Java JDK6.0学习笔记

    - **版本发布日期:** JDK6(也称为Java SE 6)于2006年12月初正式发布。 - **主要改进:** 相较于之前的版本,JDK6的新增功能对于初学者来说变化不大,但对于高级用户而言增加了一些实用的功能。 **新特性:** - *...

Global site tag (gtag.js) - Google Analytics