时间,日期类的认识与使用

  时间日期类在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);
    }
}
原文地址:https://www.cnblogs.com/qq1083735206/p/6220050.html