最近在项目中用到日期和时间,由于开始对JAVA下的日期和时间类掌握的不够熟练,所以在使用的过程成中遇到了一点问题,在此特总结一下。
Date类是比较经典的一个时间类,但是它里面的很多方法都已经过时,而Calendar相对Date较年轻且比较好用些。
根据使用频率,我们一般有如下几种用法:
1、获得当前时间并格式化输出
//使用默认时区和语言环境获得一个日历
Calendar cale = Calendar.getInstance();
//将Calendar类型转换成Date类型
Date tasktime=cale.getTime();
//设置日期输出的格式
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//格式化输出
System.out.println(df.format(tasktime));
2、输出指定日期
//使用默认时区和语言环境获得一个日历
Calendar cale = Calendar.getInstance();
//对日期和时间进行设置
cale.set(Calendar.YEAR, 2008);
//此处注意,MONTH是从0开始的,一下设置为12,如果为宽松模式,时间自动变为09年1月,如果为严格模式,应抛出异常
cale.set(Calendar.MONTH, 12);
//月份减1
cale.add(Calendar.MONTH, -1);
cale.set(Calendar.DAY_OF_MONTH, 20);
cale.set(Calendar.HOUR_OF_DAY, 18);
cale.set(Calendar.MINUTE, 32);
//分钟加1 对于没有设置项,如秒,则采用系统默认
cale.add(Calendar.MINUTE, 1);
//将Calendar类型转换成Date类型
Date tasktime=cale.getTime();
//设置日期输出的格式
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//格式化输出
System.out.println(df.format(tasktime));
附:SimpleDateFormat的格式:
在实例化SimpleDateFormat时,采用"yyyy-MM-dd HH:mm:ss"这样的构造参数,可以对输出的格式进行设置。而字符串中的字母代表的含义如下:
G 年代标志符
y 年
M 月
d 日
h 时 在上午或下午 (1~12)
H 时 在一天中 (0~23)
m 分
s 秒
S 毫秒
E 星期
D 一年中的第几天
F 一月中第几个星期几
w 一年中第几个星期
W 一月中第几个星期
a 上午 / 下午 标记符
k 时 在一天中 (1~24)
K 时 在上午或下午 (0~11)
z 时区
除了上述具有实际含义的字母之外,还可以配合诸如:空格、:、-等进行格式化设置。