Date类
Date类封装了当期时间和日期。与Java1.0定义的原始版的Date类相比,Date类发生了本质的变化。在Java1.1发布时,原始版Date类定义的许多功能被移进Calendar类和DateFormat类中。原始版Date类中的许多方法已经不赞成使用。
Date类支持的构造函数:
Date()
Date(long millisec)
第一个构造函数使用当前日期和时间初始化对象。第二个构造函数接收一个参数,该参数等于自1970年1月1日午夜以来经历的毫秒数。
Date对象创建以后,可以调用下面的方法。
序号方法和描述
1
boolean after(Date date)
若当调用此方法的Date对象在指定日期之后返回true,否则返回false。
2
boolean before(Date date)
若当调用此方法的Date对象在指定日期之前返回true,否则返回false。
3
Object clone( )
返回此对象的副本。
4
int compareTo(Date date)
比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。
5
int compareTo(Object obj)
若obj是Date类型则操作等同于compareTo(Date) 。否则它抛出ClassCastException。
6
boolean equals(Object date)
当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。
7
long getTime( )
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
8
int hashCode( )
返回此对象的哈希码值。
9
void setTime(long time)
用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期。
10
String toString( )
转换Date对象为String表示形式,并返回该字符串。
日期比较
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 允许你选择任何用户自定义日期时间格式来运行。
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Calendartest {
public static void main(String[] args) {
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = new Date();
System.out.println(ft.format(d));
}
日期和时间的格式化编码
时间模式字符串用来指定时间格式。在此模式中,所有的 ASCII 字母被保留为模式字母,定义如下:
字母描述示例
G
纪元标记
AD
y
四位年份
2001
M
月份
July or 07
d
一个月的日期
10
h
A.M./P.M. (1~12)格式小时
12
H
一天中的小时 (0~23)
22
m
分钟数
30
s
秒数
55
S
毫秒数
234
E
星期几
Tuesday
D
一年中的日子
360
F
一个月中第几周的周几
2 (second Wed. in July)
w
一年中第几周
40
W
一个月中第几周
1
a
A.M./P.M. 标记
PM
k
一天中的小时(1~24)
24
K
A.M./P.M. (0~11)格式小时
10
z
时区
Eastern Standard Time
'
文字定界符
Delimiter
"
单引号
Calendar类
Calendar抽象类提供一套方法,允许将毫秒数形式的时间转化成大量有用的时间组成部分。例如年、月、日、小时、分和秒。Calendar类没有提供公有的构造函数,Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些。Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。
创建一个代表系统当前日期的Calendar对象
Calendarc =Calendar.getInstance();//默认是当前日期
创建一个指定日期的Calendar对象
使用Calendar类代表特定的时间,需要首先创建一个Calendar的对象,然后再设定该对象中的年月日参数来完成。
//创建一个代表2009年6月12日的Calendar对象Calendarc1 =Calendar.getInstance();c1.set(2009,6-1,12);
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类对象信息的获得
Calendarc1= Calendar.getInstance();
//获得年份
intyear= c1.get(Calendar.YEAR);
//获得月份
intmonth= c1.get(Calendar.MONTH)+ 1;
//获得日期
intdate= c1.get(Calendar.DATE);
//获得小时
inthour= c1.get(Calendar.HOUR_OF_DAY);
//获得分钟
intminute= c1.get(Calendar.MINUTE);
//获得秒
intsecond= c1.get(Calendar.SECOND);
//获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
intday= c1.get(Calendar.DAY_OF_WEEK);