时间日期类在Java中使用Date类来封装的,由于Date这个类出现的时间比较早,经历了时间原点的变迁,以及JDK版本的变迁,很多的方法都已经过时了,因此很多方法的使用被现在Calendar日历取代。
一.Date目前使用的场景(优点):
1.获取程序运行的当前时间还是Date最为快捷,应为Date还有一个无参构造及一个带参构造还没有过时,
①我们可以直接使用创建对象的方法来获取当前时间,
例:
Date now = new Date ();
System.out.println( now );//这样就能获得此时的时间,
②我们可以也可以通过输入一个毫秒数来得到这个毫秒数的时间,(此毫秒数是从时间原点1970年1月1日0:0:0开始计数的)
例:
②-①:Long now =System.currentTimeMillis();这里可以得到距离时间到当前时间的毫秒数;
②-②:Date now = new Date(123456789);//这里的123456789是Long型的距离时间原点所经过的毫秒数;
System.out.println( now );//得到时间原点开始经过123456789毫秒的时间,
打印结果:Fri Jan 02 18:17:36 CST 1970 ----------->@
2.Date在各个版本中都可以使用,
3.我们可以从@ 处看到这样的外国时间表示方法我们看起来很不习惯,这里我们可以借助SimpleDateFormat来帮助我们自定义格式化时间和日期的输出;
例:
SimpleDateForma sdf = new SimpleDateForma(yyyy年MM月dd日 a hh:mm:ss:SSS E);
Date now = new Date ();
String msg = sdf.format(now);
System.out.println( now );
打印显示的结果: 2016年12月25日 下午 05:30:35:130 星期日
二.Date的不足(缺点):
1.由于方法的过时,就不能达到根据指定的年月日时分秒来设置对象的值;
2.很难取出时间日期内的一部分(比如 年、月、 日 等)进行单独的操作运算;
3.为了弥补这一不足,我们只能使用Calendar日历类来代替进行操作;(Calendar是一个抽象类)怎样使用呢?
例:
import java.util.Calendar; import java.util.Date; public class TestDate { public static void main(String[] args) { Calendar cal = Calendar.getInstance();//使用设计模式帮助我们直接获取到Calendar的子类对象,里面对应的就是当前日期时间 int year = 2016; int month = 5; int date = 20; cal.set(year, month - 1, date);//month-1这是因为外国人设计是从0~11,我们习惯是1~12来计算月份的, //Calendar ---> Date Date birthday = cal.getTime();//将时间设置为2016年5月20日 String dayOfWeek = new SimpleDateFormat("E").format(birthday);//获取这里2016年5月20日只一天是星期几? System.out.println(dayOfWeek); } }