Date、DateFormat、Calendar之间的联系与区别

在计算机世界,我们把1970 年 1 月 1 日 00:00:00定为基准时间,每个度量单位是毫秒(1秒的千分之一)

System.currentTimeMillis(); //得到现在时间减去基准时间的毫秒数

Date类

Date类(java.util)。它的对象表示一个特定的瞬间,精确到毫秒。构造方法源码:

public Date() {
        this(System.currentTimeMillis());
    }

DateFormat类

DateFormat是一个抽象类,一般使用它的的子类SimpleDateFormat类来实现。

DateFormat类的作用
 把时间对象转化成指定格式的字符串。反之,把指定格式的字符串转化成时间对象。
 例子:

DateFormat s1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//指定格式
  // 将时间对象转换成字符串
String daytime = s1.format(new Date());
  // 将符合指定格式的字符串转成成时间对象.字符串格式需要和指定格式一致。
String time = "2007-10-7";
Date date = s2.parse(time);

Calendar日历类

Calendar 类是一个抽象类,为我们提供了关于日期计算的相关功能,比如:年、月、日、时、分、秒的展示和计算。
GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。
注意月份、周日的表示,一月是0,二月是1,以此类推,12月是11。 周日是1,周一是2…周六是7。
代码示例:

   // 得到相关日期元素
    GregorianCalendar calendar = new GregorianCalendar(2999, 10, 9,  22, 10, 50);
    int year = calendar.get(Calendar.YEAR); // 打印:1999
    int month = calendar.get(Calendar.MONTH); // 打印:10
     // 设置日期
    Calendar calendar2 = new GregorianCalendar();
    calendar2.set(Calendar.YEAR, 2999);
    calendar2.set(Calendar.MONTH, Calendar.FEBRUARY); // 月份数:0-11
      // 日期计算
    GregorianCalendar calendar3 = new GregorianCalendar(2999, 10, 9,  22, 10, 50);
    calendar3.add(Calendar.MONTH, -7); // 月份减7
    calendar3.add(Calendar.DATE, 7); // 增加7天
     // 日历对象和时间对象转化
    Date d = calendar3.getTime();//转化为Date
    GregorianCalendar calendar4 = new GregorianCalendar();
    calendar4.setTime(new Date()); //转化为Calendar

由字符串转化为日历对象:

代码示例:

 String str = "2019-5-28";
 DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); //先定义好格式
 Date date = df.parse(str); //再转化为Date对象
 Calendar gc = new GregorianCalendar();
 gc.setTime(date); //最后转为Calendar对象

你可能感兴趣的:(JAVA)