java.util.Date

包含有年月日时分秒,精确到毫秒级别。
官方解释:

// The class Date represents a specific instant in time, with millisecond precision.
// 语句
Date date = new Date();
System.out.println(date); //输出结果
Sat Feb 03 14:48:47 CST 2018

java.sql.Date

包含年月日,时分秒都被设置为0,之所以这样设计是为了适应SQL中的DATE类型。
官方解释:

// A thin wrapper around a millisecond value that allows JDBC to identify this as an SQL DATE value. A milliseconds value represents the number of milliseconds that have passed since January 1, 1970 00:00:00.000 GMT.
// To conform with the definition of SQL DATE, the millisecond values wrapped by a java.sql.Date instance must be 'normalized' by setting the hours, minutes, seconds, and milliseconds to zero in the particular time zone with which the instance is associated.

注意,虽然说这个类是使用年月日的,但是初始化的时候,需要一个long类型的参数,这个参数代表着January 1, 1970, 00:00:00 GMT到某个时间的毫秒数。如果是当前时间的话,可以用System.currentTimeMillis()或者new Date().getTime()获取。

// 语句
java.sql.Date sqlDate = new java.sql.Date(System.currentTimeMillis());
System.out.println(sqlDate); // 输出结果
2018-02-03

java.sql.Time

包含时分秒,这个也是为了SQL中的TIME类型而出现的。

// 语句
Time time = new Time(System.currentTimeMillis());
System.out.println(time); // 输出结果
15:07:35

java.sql.Timestamp

时间戳,适配于SQL中的TIMESTAMP类型而出现的,精确到纳秒级别。

格式化输出:java.text.SimpleDateFormat

这个类提供时间的各种格式化输出和将字符串转换为时间类,简单来说,它拥有date → text 以及text → date的能力。
例如:将Date格式化输出

    // 格式化输出
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String dateStr = sdf.format(new Date());
System.out.println(dateStr); // 结果
2018年02月03日 15:20:58

例如:将时间字符串转化为Date

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss");
Date date = sdf.parse("2018年02月03日 15:20:58");

注意,SimpleDateFormat.parse(String source)中的source格式一定得是SimpleDateFormat当前使用的格式。如这个例子中使用了yyyy年MM月dd日 HH:mm:ss,所以传入了2018年02月03日 15:20:58时间字符串。
PS:有些同学对yyyy或者MM这些字母代表的含义不懂的话,建议使用这个类的时候,看一下源码,源码类上都有对这些字母的解释。

java.util.Calendar

日历类,这个类大多被用于获取时间的特殊属性,比如说获取某个时间对象的年份、月份、星期等

    Calendar calendar = Calendar.getInstance();
// 设置时间,不设置的话,默认是当前时间
calendar.setTime(new Date());
// 获取时间中的年份
int year = calendar.get(Calendar.YEAR);

从JDK1.8开始,Calendar增加新的构造方式

    // since jdk 1.8
Calendar calendar = new Calendar.Builder().setDate(2018, 3, 25).build();
int year = calendar.get(Calendar.YEAR);
System.out.println(year);

阶段小结

以上大概就是jdk1.8之前的操作时间方式了。然后,从jdk1.8开始,有了新的操作时间的类。

java.time.LocalDate

LocalDate提供年月日而不提供时分秒信息,它是不可变类且线程安全的。它经常被用于展示year-month-day,day-of-year,day-of-week,week-of-year等格式的信息。

        LocalDate localDate = LocalDate.now();
// 获取当天是几号
int dayOfMonth = localDate.getDayOfMonth();
// 获取当天是星期几
DayOfWeek dayOfWeek = localDate.getDayOfWeek(); // 获取本月的第一天
LocalDate firstDayOfMonth = localDate.with(TemporalAdjusters.firstDayOfMonth());
// 取本月最后一天
LocalDate lastDayOfThisMonth = localDate.with(TemporalAdjusters.lastDayOfMonth());

是不是很赞~

java.time.Time

提供时分秒不提供年月日,也是线程安全并且不可变类。它经常被用于展示hour-minute-second格式的信息。可以对时间进行加减等操作。

        // 样例
LocalTime localTime = LocalTime.now();
// 获取当前的小时
int hour = localTime.getHour();
System.out.println(hour);
// 小时数加1
LocalTime addTwoHours = localTime.plusHours(2L);
System.out.println(addTwoHours.getHour()); // 结果
16
18

java.time.LocalDateTime

包含年月日时分秒,精确到纳秒级别,同样是线程安全并且不可变类。它可以操作时间中的年月日时分秒并且可以获取其中的属性。

        LocalDateTime localDateTime = LocalDateTime.now();
// 获取年
int year = localDateTime.getYear();
// 获取小时
int hour = localDateTime.getHour();
// 增加一年
LocalDateTime addOneYear = localDateTime.plusYears(1);

结语

今天就先这样啦,希望看到这篇博文的人能有所收获,同样,错误之处还请帮忙指正。

Java时间类总结的更多相关文章

  1. java时间类简单总结

    java时间类(Data类) 1.Data类(没有考虑到国际化,好多方法已过时java.util.Data包中) 父类(是类不是接口含有直接子类3个):  日期格式为:年月日时分秒(不包含毫秒部分) ...

  2. Java时间类从此变得清晰明了

    Java时间类 Java时间类分为Date 日期类和Calendar 日历类,相信很多小伙伴在初学时会对这个两个类的用法.区别以及有什么联系会感到疑惑,似乎懂了,但又不能具体说清,今天再带你来清晰的再 ...

  3. java时间类Date、Calendar及用法

    对于时间类,这篇主要说明各种现实情况下如何取值,怎么定向取值,得到自己想要的时间参数.在java中时间类主要有Date.Calendar,暂时只介绍 java.util.*下的时间类,对于java.s ...

  4. Java 时间类

    1.System 类 2.Date 类 3.SimpleDateFormate 类 4.Calendar 类 1.System 类 得到当前的时间值.System 类不能被实例化,需要通过它的静态方法 ...

  5. Java 时间类-Calendar、Date、LocalDate/LocalTime

    1.Date 类 java.util.Date是一个"万能接口",它包含日期.时间,还有毫秒数,如果你只想用java.util.Date存储日期,或者只存储时间,那么,只有你知道哪 ...

  6. Java时间类(转)

    package com.chinagas.common.utils; import java.text.ParseException; import java.text.SimpleDateForma ...

  7. Java 时间类 Date 和 Calendar

    在项目中获取一个yyyy-MM-dd HH:mm:ss格式的时间字符串 package org.htsg.kits; import java.text.SimpleDateFormat; import ...

  8. Java中常见时间类的使用

    模拟场景针对于常用的操作API,比如流操作(字符流.字节流),时间操作等,仅仅了解概念性的定义终究是无法了解该类的用途和使用方式:这种情况在使用的时候便一脸茫然,脑海中映射不到对应的知识点.本篇博客将 ...

  9. Java Calendar类使用总结

    平时在浏览一些网站时,有些网站会显示出当前时间,如现在是xx年xx月xx日 xx时xx分xx秒,在实际的开发过程中,也会涉及到日期和时间的计算,Java中提供了一个专门的类Calendar来处理日期与 ...

随机推荐

  1. 1.7(学习笔记)过滤器(Fliter)

    一.过滤器(Fliter)简介 过滤器是位于客户端与服务器之间的滤网,在访问资源时会经过一系列的过滤器, 满足条件则放行,不满足条件的将其拦截. 过滤器可以看做是一个特殊的Servlet,设置了过滤器 ...

  2. java static代码段

    1)java中还有个static代码块的形式,形式为 static {……}.static代码块是类定义的一部分,仅仅在类被初次加载的时候被调用一次,之后再调用不会再加载.那么类什么时候首次被加载呢? ...

  3. jeeplus中两个项目redis冲突问题

    修改端口号[两个项目使用不同的database]

  4. 权限管理-RBAC

    (一)RBAC 通过用户与角色关联,角色与操作的关联实现用户与操作的关联 (二)权限细分 (三)数据库设计 (四)程序设计 (五)权限与应用程序 (1)应用URL实现程序权限控制 (2)应用code实 ...

  5. C语言 printf格式化输出,参数详解

      有关输出对齐 int main(int argc, char* argv[]){ char insertTime[20] = {"1234567890"}; double in ...

  6. java实现发送邮件功能

    项目中实现发送邮件功能,先书写一个小Demo,记录如下: POM.XML中导入依赖 <!-- start java 提供的支持邮件发送相关业务的类 --> <dependency&g ...

  7. Kubernetes dashboard集成heapster

    图形化展示度量指标的实现需要集成k8s的另外一个Addons组件: Heapster . Heapster原生支持K8s(v1.0.6及以后版本)和 CoreOS ,并且支持多种存储后端,比如: In ...

  8. C++发送HTTP请求---亲测可行(转)

    转自:http://hi.baidu.com/benbearlove/item/1671c23017575825b3c0c53f 环境:xp sp3,vs2008,在静态库中使用 MFC #inclu ...

  9. JS中map、forEach、filter、reduce等Array新增方法的区别

    数组在各个编程语言中的重要性不言而喻,但是在之前的JavaScript中数组虽然功能已经很强大,但操作方法并不完善,在ECMAScript5中做了适当的补充. Array.isArray(elemen ...

  10. vue拦截器Vue.http.interceptors.push

    刚开始学vue,github上down了一个开源项目,看源代码的时候看到了这个地方: /** * @export * @param {any} request * @param {any} next ...