日期及其格式化
1、java.util.Date类
用于表示日期和时间,要获取当前时间,可以使用下面的代码:
Date d = new Date();
System.out.println(d.toString());
下面是输出的结果:
Mon Feb 06 15:45:47 CST 2006
如果想按照特定的格式进行输出,可以按照下面的方法完成,但是现在的版本中建议不要使用。
int year = d.getYear()+1900;
int month = d.getMonth()+1;
int date = d.getDate();
int hour = d.getHours();
int minute = d.getMinutes();
int second = d.getSeconds();
System.out.println(year+"-"+month+"-"+date+" "+hour+":"+minute+":"+second);
执行的结果如下:
2006-2-6 15:52:31
如果想根据年月日来确定一个Date对象可以先创建一个对象,然后使用setter方法来完成,例如:setYear(int)、setMonth(int)等,当然这些方法也是建议不使用。如果想对时间进行比较灵活的处理可以使用DateFormat和SimpleDateFormat。
如果想按照下面的格式进行输出:
2006年02月06日 16点05分37秒
可以使用下面的代码:
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日 hh点mm分ss秒");
String str = df.format(d);
System.out.println(str);
格式中yyyy表示年份,可以写2位,MM表示月份,可以写1位,dd表示日,可以写1位,hh表示小时,mm表示分钟(注意大小写),ss表示秒。
注意:DateFormat和SimpleDateFormat在java.text包中,使用的时候需要引入。
要想把一个日期字符串转换成一个时间,例如把“2006-2-6”转换成日期,可以使用下面的代码:
String dates = "2006-2-6";
//定义日期字符串
DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
//定义日期字符串的格式
Date d2;
//声明日期对象
try {
d2 = df2.parse(dates);
//把日期字符串转换成日期
System.out.println(df2.format(d2));
}
catch (ParseException ex) {
}
需要注意的是在转换的时候需要进行异常处理,因为在转换的时候可能会产生异常。
2、java.util.Calendar类
Calendar中提供了很多对时间中年、月、日、时、分、秒以及星期进行操作的方法,如果想对时间进行比较详细的操作可以使用Calendar。
该类也是抽象类,使用的时候需要使用getInstance获取实例然后再操作,并且该方法可以获取与特定时区相对应的实例,如果不指定参数,获取的就是默认的时间。
Calendar c1 = Calendar.getInstance();
要想获取时间中具体的年月日时分秒或者其它信息,通过get方法完成,方法的参数用来指定获取什么信息,例如要获取年月日可以通过下面的代码完成。
year = c1.get(Calendar.YEAR);
month = c1.get(Calendar.MONTH)+1;
date = c1.get(Calendar.DATE);
要对时间中的某一项修改使用set方法,方法的定义如下:
public void set(int field,int value)
第一个参数指定修改的项,第二个参数表示修改后的值,例如把年修改成2003年:
c1.set(Calendar.YEAR,2003);
如果要同时修改年月日,可以使用下面的方法:
public void set(int year,int month,int date)
参数分别表示时分秒,下面是同时修改年月日的例子:
c1.set(2003,5,5);
下面是同时修改年月日时分秒的例子
c1.set(2003,5,5,10,30);
//修改年月日时分
c1.set(2003,5,5,10,30,20);
//修改年月日时分秒
Date对象和Calendar对象之间可以相同转换,下面是相应的例子:
d2 = c1.getTime();
//把Calendar对象转换成Date对象
c1.setTime(d2);
//把日期类型转换成Calendar类型