在学习java时,总会对日期的用法感到迷惑、但日期又是个大商业公司必须的,所以就认真的学习了一下java中的有关时间和日历的类。
1、Date(import java.util.Date)
截止到jdk1.7该类中已经有很多方法遭到弃用,剩余的方法不多。
Date date = new Date();
System.out.println(date.toString()); //Thu Jun 19 15:16:05 CST 2014
long s = System.currentTimeMillis();
System.out.println(s); //1403162165781
System.out.println(date.getTime()); //1403162165781
s += 10000;
Date NewDate = new Date(s);
date.setTime(s);
System.out.println(date.toString());//Thu Jun 19 15:16:15 CST 2014
System.out.println(NewDate.toString());//Thu Jun 19 15:16:15 CST 2014
从上述代码可以看出,Date类的构造方法有两种,无参构造和利用毫秒数构造。并且Date是可变类,可以利用setTime()方法,重新设置时间。
但从上述的Date的输出看到,一般输出的格式相对于国人来说是晦涩难懂的,所以sun公司提供了一种格式化类来定义自己想要的格式。
DateFomat 这是一个抽象类,我们一般用的都是其子类SimpleDateFomat
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String str = sdf.format(date);
System.out.println(str);//2014-06-19 15:30:13
2、Calendar(import java.util.Calendar)
Calendar是一个抽象类,不能实例化,但其提供了了一个工厂方法
Calendar rightNow = Calendar.getInstance();
/**
* 根据当前系统地区创建Calendar实例
* 默认创建出来的Calendar描述的是当前系统时间
* java.util.Calendar
*/
Calendar calendar = Calendar.getInstance();
// System.out.println(calendar);
/**
* Date getTime()
* 以Date形式描述当前Calendar所描述的时间
*/
Date date = calendar.getTime();
/**
* void setTime(Date date)
* 让当前Calendar描述给定的Date对象所描述的时间
*/
calendar.setTime(new Date());
System.out.println(date);
可以调用Calendar的getTime方法获取Date类的时间。
//获取当前的系统时间
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());//Thu Jun 19 16:28:54 CST 2014
//将当前的年份设置为2000年
//在Calendar中由常量YEAR代表年
calendar.set(Calendar.YEAR,2000);
System.out.println(calendar.getTime());//Mon Jun 19 16:28:54 CST 2000
//在Calendar中常量MONTH代表月,将月设置为5月
//0代表1月,在Calendar中由代表月份的常量
calendar.set(Calendar.MONTH, 4);
//calendar.set(Calendar.MONTH, Calendar.MAY);
System.out.println(calendar.getTime());//Fri May 19 16:28:54 CST 2000
/**
* 在Calendar中:
* DATE代表当月的一天
* DAY_OF_MONTH 也代表当月的天,与DATE完全一样
* DAY_OF_WEEK代表星期中的一天
* DAY_OF_YEAR代表一年中的第几天
* 将日期设置为当月的第五天
*/
calendar.set(Calendar.DATE,5);
System.out.println(calendar.getTime());//Fri May 05 16:28:54 CST 2000
//获取现在的时间
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println("现在是:" +year+ "年" +month+ "月" +day+ "日");//现在是:2000年5月5日
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println("星期 " + (dayOfWeek == 1? "日" : dayOfWeek));//星期 6