Java 日期时间
java.util
包提供了 Date
类来封装当前的日期和时间。 Date
类提供两个构造函数来实例化 Date
对象。
第一个构造函数使用当前日期和时间来初始化对象。
1 | Date(); |
第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
1 | Date(long millisec) |
获取当前日期时间
Java
中获取当前日期和时间很简单,使用Date
对象的 toString()
方法来打印当前日期和时间
1 | import java.util.Date; |
日期比较
Java
使用以下三种方法来比较两个日期:
- 使用
getTime()
方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。 - 使用方法
before()
,after()
和equals()
。例如,一个月的12号比18号早,则 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。 - 使用
compareTo()
方法,它是由Comparable
接口定义的,Date
类实现了这个接口。
使用 SimpleDateFormat
格式化日期
SimpleDateFormat
是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat
允许你选择任何用户自定义日期时间格式来运行。
1 | import java.util.*; |
1 | SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss"); |
这一行代码确立了转换的格式,其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是时、分、秒。
注意:有的格式大写,有的格式小写,例如 MM 是月份,mm 是分;HH 是 24 小时制,而 hh 是 12 小时制。
解析字符串为时间
SimpleDateFormat
类有一些附加的方法,特别是parse()
,它试图按照给定的SimpleDateFormat
对象的格式化存储来解析字符串。
1 | import java.util.*; |
Java 休眠(sleep)
sleep()
使当前线程进入停滞状态(阻塞当前线程),让出CPU
的使用、目的是不让当前线程独自霸占该进程所获的CPU
资源,以留一定时间给其他线程执行的机会。
Calendar类
我们现在已经能够格式化并创建一个日期对象了,但是我们如何才能设置和获取日期数据的特定部分呢,比如说小时,日,或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案是使用Calendar
类。
Calendar
类的功能要比Date
类强大很多,而且在实现方式上也比Date
类要复杂一些。
Calendar
类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance
方法创建即可。
创建一个代表系统当前日期的Calendar对象
1 | Calendar c = Calendar.getInstance();//默认是当前日期 |
创建一个指定日期的Calendar对象
使用Calendar
类代表特定的时间,需要首先创建一个Calendar
的对象,然后再设定该对象中的年月日参数来完成。
1 | //创建一个代表2009年6月12日的Calendar对象 |
Calendar类对象字段类型
Calendar
类中用以下这些常量表示不同的意义,jdk
内的很多类其实都是采用的这种思想
| 常量 | 描述 |
| ——————— | —————————— |
| Calendar.YEAR | 年份 |
| Calendar.MONTH | 月份 |
| Calendar.DATE | 日期 |
| Calendar.DAY_OF_MONTH | 日期,和上面的字段意义完全相同 |
| Calendar.HOUR | 12小时制的小时 |
| Calendar.HOUR_OF_DAY | 24小时制的小时 |
| Calendar.MINUTE | 分钟 |
| Calendar.SECOND | 秒 |
| Calendar.DAY_OF_WEEK | 星期几 |
Calendar类对象信息的设置
Set设置:
1 | Calendar c1 = Calendar.getInstance(); |
Add设置:
1 | Calendar c1 = Calendar.getInstance(); |
Calendar类对象信息的获得
1 | Calendar c1 = Calendar.getInstance(); |
GregorianCalendar类
Calendar
类实现了公历日历,GregorianCalendar
是Calendar
类的一个具体实现。
Calendar
的getInstance()
方法返回一个默认用当前的语言环境和时区初始化的GregorianCalendar
对象。GregorianCalendar
定义了两个字段:AD
和BC
。这是代表公历定义的两个时代。