Date


Date

api:java.util.Date[C] - 使用这个类之前,必须要导包import

这是java中提供的关于日期的处理,内置的对象类型.它本身是一个过时的类

里面提供了很多已经过时的方法.

目标:掌握这个类中提供的方法

api手册

构造方法

作用:创建这个类的对象的方式

  1. 观察提供的方法是静态的方法还是非静态的方法. - api手册方法摘要

    Date类中提供的方法几乎都是非静态的方法 - 考虑如何构建这个对象?

  2. 如何构建对象 - api手册的构造方法[面向对象]

    简单理解构造方法 - “方法”,构造方法通过new关键字调用

    • Date();//Date d = new Date();//获取当前系统时间

    • Date(int year, int month, int date);//已经过时的

      Date d2 = new Date(2021-1900,6,21);
      year - 1900 => 实际的year
      month的范围是[0,11]
      
    • Date(long date);//根据一个毫秒数来构建一个指定的日期类型 - 重新设置一个新的Date

      Java中日期类型Date对象是不支持运算的.

      计算三天之后的此时此刻
      long afterThreeTime = new Date().getTime()+3L*24*60*60*1000;
      Date afterThreeDate = new Date(afterThreeTime);
      System.out.println(afterThreeDate);
      

常用方法

非静态方法 - 日期对象进行调用.

  • long getTime();//返回当前日期的毫秒数的表现形式 - 获取当前系统时间的毫秒数.距离1970年1月1日

    1970年是计算机的元年

  • get/set方法 - 过时的

    1. void setYear(int year);// year-1900
    2. void setMonth(int month);//month的范围[0,11]
    3. void setDate(int date);//设置今天是几号
    4. void setHours(int hours);//设置小时
    5. void setMinutes(int minutes);//设置分钟
    6. void setSeconds(int seconds);//设置秒
    package tech.aistar.day05;
      
    import java.util.Date;
      
    /**
     * 本类用来演示: java.util.Date 日期处理类
     * @date: 2021/7/21 8:43 上午
     */
    public class DateDemo {
        public static void main(String[] args) {
            //1. 创建一个日期对象
            //alter + enter 快速导包
            Date d = new Date();//空参构造方法
      
            //为什么此处输出的不是内存地址??? - OO - toString();
      
            //Wed Jul 21 08:45:03 CST 2021
            System.out.println(d);
      
            //2. 重载的构造方法 - 过时的构造
            Date d2 = new Date(2021-1900,6,21);
            System.out.println(d2);
      
            //3. 利用毫秒数来构建一个Date对象
            Date d3 = new Date(1626829161216L);
            System.out.println(d3);
      
            System.out.println("====常用方法===");
            //4.. 获取当前日期的毫秒数
            //1秒 = 1000毫秒
            long nowTime = d.getTime();
            System.out.println(nowTime);//1626828910303
      
            //练习-计算三天之后的此时此刻
            long afterThreeTime = new Date().getTime()+3L*24*60*60*1000;
            Date afterThreeDate = new Date(afterThreeTime);
            System.out.println(afterThreeDate);
      
            System.out.println("=====set设置/get获取======");
      
            Date now = new Date();
      
            now.setYear(2021-1900);//设置年份
            now.setMonth(6);//设置月份[0,11]
            now.setDate(25);
    
      System.out.println("now:"+now);
    
      int year = now.getYear()+1900;//获取年份
      System.out.println("year:"+year);
    
      System.out.println("month:"+now.getMonth());//获取月份
    
      System.out.println("date:"+now.getDate());//获取几号
    
      System.out.println("day:"+now.getDay()); // 周几,周1-周6[1-6],周日是0
    
      System.out.println("hours:"+now.getHours());
    
      //void setTime(long date);
      //构造 Date(long time);
      Date dd = new Date();
      dd.setTime(1726830007794L);
      System.out.println(dd);
  }

}


Calendar

日历类 - 超纲的内容

api - java.util.Calendar

public abstract class Calendar
abstract[修饰符]修饰的类是一个抽象类 - 不能够被new

构建Calendar对象 - Calendar cal = new Calendar();//error

api手册

常用方法

  1. static Calendar getInstance();

    //获取当前系统的日历对象
    Calendar cal = Calendar.getInstance();//底层使用到了简单工厂的设计模式[不需要了解暂时]
    
  1. 关于设置日历字段

    void    set(int year, int month, int date)
    设置日历字段中的值 YEAR , MONTH和 DAY_OF_MONTH 。
      
    void    set(int year, int month, int date, int hourOfDay, int minute)
    设置日历字段中的值 YEAR , MONTH , DAY_OF_MONTH , HOUR_OF_DAY和 MINUTE 。
      
    void    set(int year, int month, int date, int hourOfDay, int minute, int second)
    设置字段中的值 YEAR , MONTH , DAY_OF_MONTH , HOUR_OF_DAY , MINUTE和 SECOND 。
    
    Date -> Calendar 
    void setTime(Date date);
    
  2. 单独针对单个字段一一进行赋值

    void set(int field,int value);
    
    只要看到field
    //公开的静态的常量属性
    public static final int YEAR = 1;
    
  3. 关于获取日历字段

    Date getTime();//获取日历信息中关于日期部分的信息 - Calendar转成Date类型
          
    int get(int field);//关于获取日历指定字段的值
    

总结

  1. 毫秒数 -> Date

    a. java.util.Date中提供了构造方法Date(long time);
    b. 上述类void setTime(long time);
    
  2. Date -> 毫秒数

    该类中long getTime();
    
  3. Calendar -> Date

    Calendar类中提供了Date getTime();
    
  4. Date -> Calendar

    Calendar类中void setTime(Date date);
    
package tech.aistar.day05;

import java.util.Calendar;
import java.util.Date;

/**
 * 本类用来演示: 日历类java.util.Calendar
 * @date: 2021/7/21 9:30 上午
 */
public class CalendarDemo {
    public static void main(String[] args) {

        //超纲 - abstract是修饰符 - 修饰类 - 抽象的类
        //特点 - 不能够被new[不能够被实例化,具体化]
        //Calendar cal = new Calendar();//error

        Calendar cal = Calendar.getInstance();
        //System.out.println(cal);


        //统一设置值
        cal.set(2020,6,21);

        //Calendar -> Date
        Date now = cal.getTime();

        System.out.println(now);

        //Date -> Calendar
        Date d = new Date(17818237347L);
        cal.setTime(d);

        System.out.println(cal.get(1));

        System.out.println("====单个字段一一赋值====");
        //void set(int field,int value);

        Calendar cd = Calendar.getInstance();

        //通过字面量直接进行设置 - 可读性比较差

        //获取Calendar中提供的一些公开的静态的常量属性

        //System.out.println();

        //常量的好处 - 提供程序的可读性
        cd.set(Calendar.YEAR,2021);
        cd.set(Calendar.MONTH,6);
        cd.set(Calendar.DAY_OF_MONTH,24);

        System.out.println(cd.getTime());//Calendar->Date

        int year = cd.get(Calendar.YEAR);
        int month = cd.get(Calendar.MONTH)+1;
        int day = cd.get(Calendar.DAY_OF_MONTH);
        System.out.println("year:"+year);
        System.out.println("month:"+month);
        System.out.println("day:"+day);

        //获取周几
        int week = cd.get(Calendar.DAY_OF_WEEK);
        System.out.println("week:"+week);//周日~周六,[1~7]
    }
}

获取键盘键盘输入

  1. java.util.Scanner键盘类

  2. 如何构建这个Scanner对象

    Scanner sc = new Scanner(System.in);
    
  3. 方法

    3-1. int nextInt();//只能获取整数

    3-2. double nextDouble();//获取小数

    3-3. String nextLine();//获取字符串

  4. 注意点:nextLine不要和nextInt或者nextDouble混用.


文章作者: 码农耕地人
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 码农耕地人 !
  目录