在Java中获取当前时间,可以使用 java.util.Date 类和 java.util.Calendar 类完成。其中,Date 类主要封装了系统的日期和时间的信息,Calendar 类则会根据系统的日历来解释 Date 对象。下面详细介绍Date类的具体使用。

Date 类

Date 类表示系统特定的时间戳,可以精确到毫秒。Date 对象表示时间的默认顺序是星期、月、日、小时、分、秒、年。

1. 构造方法

Date 类有如下两个构造方法。

  • Date():此种形式表示分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),使用该构造方法创建的对象可以获取本地的当前时间。

  • Date(long date):此种形式表示从 GMT 时间(格林尼治时间)1970 年 1 月 1 日 0 时 0 分 0 秒开始经过参数 date 指定的毫秒数。

这两个构造方法的使用示例如下:

Date date1 = new Date();    // 调用无参数构造函数
System.out.println(date1.toString());    // 输出:Wed May 18 21:24:40 CST 2016
Date date2 = new Date(60000);    // 调用含有一个long类型参数的构造函数
System.out.println(date2);    // 输出:Thu Jan 0108:01:00 CST 1970

Date 类的无参数构造方法获取的是系统当前的时间,显示的顺序为星期、月、日、小时、分、秒、年。

Date 类带 long 类型参数的构造方法获取的是距离 GMT 指定毫秒数的时间,60000 毫秒是一分钟,而 GMT(格林尼治标准时间)与 CST(中央标准时间)相差 8 小时,也就是说 1970 年 1 月 1 日 00:00:00 GMT 与 1970 年 1 月 1 日 08:00:00 CST 表示的是同一时间。 因此距离 1970 年 1 月 1 日 00:00:00 CST 一分钟的时间为 1970 年 1 月 1 日 00:01:00 CST,即使用 Date 对象表示为 Thu Jan 01 08:01:00 CST 1970。

2. 常用方法

Date 类提供了许多与日期和事件相关的方法,其中常见的方法如下表所示。

方法 描述
boolean after(Date when) 判断此日期是否在指定日期之后
boolean before(Date when) 判断此日期是否在指定日期之前
int compareTo(Date anotherDate) 比较两个日期的顺序
boolean equals(Object obj) 比较两个日期的相等性
long getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来,此 Date 对象表示的毫秒数
String toString() 把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy。
其中 dow 是一周中的某一天(Sun、Mon、Tue、Wed、Thu、Fri 及 Sat)

例 1

下面使用一个实例来具体演示 Date 类的使用。假设,某一天特定时间要去做一件事,而且那个时间已经过去一分钟之后才想起来这件事还没有办,这时系统将会提示已经过去了多 长时间。具体的代码如下:

import java.util.Date;
import java.util.Scanner;public class Test11 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入要做的事情:");String title = input.next();Date date1 = new Date(); // 获取当前日期System.out.println("[" + title + "] 这件事发生时间为:" + date1);try {Thread.sleep(60000);// 暂停 1 分钟} catch (InterruptedException e) {e.printStackTrace();}Date date2 = new Date();System.out.println("现在时间为:" + date2);if (date2.before(date1)) {System.out.println("你还有 " + (date2.getTime() - date1.getTime()) / 1000 + " 秒需要去完成【" + title + "】这件事!");} else {System.out.println("【" + title + "】事情已经过去了 " + (date2.getTime() - date1.getTime()) / 1000 + " 秒");}}
}

在该程序中,分别使用 Date 类的无参数构造方法创建了两个 Date 对象。在创建完第一个 Date 对象后,使用 Thread.sleep() 方法让程序休眠 60 秒,然后再创建第二个 Date 对象,这样第二个 Date 对象所表示的时间将会在第一个 Date 对象所表示时间之后,因此“date2.before(date1)”条件表达式不成立,从而执行 else 块中的代码,表示事情已经发生过。

运行该程序,执行结果如下所示。

请输入要做的事情:
收快递
【收快递】这件事发生时间为:Fri Oct 12 11:11:07 CST 2018
现在时间为:Fri Oct 12 11:12:07 CST 2018
【收快递】事情已经过去了 60 秒

Java学习视频

Java基础:

Java300集,Java必备优质视频_手把手图解学习Java,让学习成为一种享受

Java项目:

【Java游戏项目】1小时教你用Java语言做经典扫雷游戏_手把手教你开发游戏

【Java毕业设计】OA办公系统项目实战_OA员工管理系统项目_java开发

Java Date类的使用(日期处理)相关推荐

  1. java str2date,java date类与string类实例代码分享

    Date类用来指定日期和时间,其构造函数及常用方法如下: publicDate() 从当前时间构造日期时间对象. publicStringtoString() 转换成字符串. publiclongge ...

  2. 5、时间日期的处理:Java Date类、Calendar类详解

    在 Java 中获取当前时间,可以使用 java.util.Date 类和 java.util.Calendar 类完成.其中,Date 类主要封装了系统的日期和时间的信息,Calendar 类则会根 ...

  3. Java常用类之【日期相关类】

    一.日期类 Java语言提供了2个类来处理日期 Date类 Date类以毫秒来表示特定的日期构造方法Date date = new Date();System.out.println(date); 获 ...

  4. java date类 时区_Java Date 与时区

    标签: Java 中,一个 Date 类对象内部包含2个信息: 绝对时间,即从1970-1-1 00:00:00.000 经过的毫秒数,表示为long类型 时区 绝对时间与时区无关.假设同一时刻,地球 ...

  5. java date类 时区_Java时区转换及Date类实现原理解析

    这篇文章主要介绍了Java时区转换及Date类实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.时区的说明 地球表面按经线从东到西,被 ...

  6. Java Date类

    1.1 Date类概述 类 Date 表示特定的瞬间,精确到毫秒. 继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对象. // ...

  7. java date 转换calendar_Java中日期格式(String、Date、Calendar)的相互转换

    1 packageday20190318;2 3 importjava.text.ParseException;4 importjava.text.SimpleDateFormat;5 importj ...

  8. java date类_Java的败笔-Date类

    import java.sql.*; import java.text.ParseException; import java.text.SimpleDateFormat; /** * 日期增改查测试 ...

  9. java date是cst_Java CST 日期问题

    在做一个项目的过程中,出现了一个很奇怪的问题.就是修改一个项目的时候,从数据库中读取的时间显示是正确的,然后更新到后台的也是正确的,但是在进行时间转化的时候,出现了 Mon May 29 23:59: ...

最新文章

  1. linux valgrind Memcheck--内存检查工具
  2. php编程习惯,PHP 编程的 5个良好习惯
  3. Java循环中删除一个列表元素
  4. tornado连接数据库
  5. 【C++基础】时间类型详解(转)
  6. mysql 修改表 引擎,mysql如何修改表类型(表引擎)
  7. Vue.js 入门案例
  8. [转]程序员最容易犯的几个技术上的错误
  9. mysql 多表并列查询_Mysql多表查询(两张独立表,一张关系表)
  10. 贪心字典序最小问题poj3617
  11. 《CDN技术详解》 - CDN知多少?
  12. win10自动停用打印服务器,win10系统添加打印机总是自动关闭打印服务的技巧介绍...
  13. 如何备考软考中级-系统集成项目管理工程师
  14. SSM项目实战之十一:用户信息的添加
  15. OpenFileDiaog.Filter的使用
  16. Java课程设计之你画我猜
  17. FTP服务器的搭建,可两个电脑通过局域网进行传输
  18. 植物大战僵尸源代码java面向对象,植物大战僵尸:实现游戏内自动收集阳光
  19. ICLR 2022最佳论文解读
  20. 济南2022年全面实行电子劳动合同,爱签电子合同为HR赋能增效

热门文章

  1. 解决AndroidStudio报错:Cannot resolve constructor ‘Intent()...‘
  2. canvas初探实践-第二篇
  3. 2020-爬虫学习-实战练习:爬取豆瓣电影排名前25部的电影信息
  4. 基于JSP的美食网站管理系统设计与实现
  5. 北大MOOC第三周 005:魔兽世界之一:备战
  6. matlab中legend字体大小设置(一)
  7. iphone7刷入android10,iPhone 成功刷入安卓 10 系统
  8. 基于golang实现redis分布式锁
  9. lol6月五日服务器维护,LOL6月5日测试服更新_6月5日PBE改动一览_3DM网游
  10. 优因云会议Android 手机软件,优因云会议为什么这么受市场欢迎