Date + Calendar

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的,如果你想要得到年份需要加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);//设置秒
import java.util.Date;

/**
 * 本类用来演示: java.util.Date 日期处理类
 */
public class DateDemo {
    public static void main(String[] args) {
        //1. 创建一个日期对象
        Date d = new Date();   //空参构造方法
        System.out.println(d); //(获得的是系统当前时间)
        //为什么此处输出的不是内存地址??? - OO - toString();

        //2. 重载的构造方法 - 过时的构造
        Date d2 = new Date(2021-1900,6,21);
        System.out.println(d2);//2021.7.21

        //3. 利用毫秒数来构建一个Date对象
        Date d3 = new Date(1626829161216L);
        System.out.println(d3);//根据1970年计算

        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();//底层使用到了简单工厂的设计模式[不需要了解暂时]

2.关于设置日历字段

void	set(int year, int month, int date)
//此时的year 不用减去1900 只有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);

3.单独针对单个字段一一进行赋值

void set(int field,int value);

//只要看到field
//公开的静态的常量属性 - 接口中的变量
public static final int YEAR = 1;
//例如:
    Calendar cd = Calendar.getInstance();

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

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

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

4.关于获取日历字段

//获取日历信息中关于日期部分的信息 - Calendar转成Date类型
//Calendar内部提供的getTime方法-返回值是一个Date类型
public final Date getTime();

//获取日历指定字段的值
public int get(int field); 
//设置日历指定字段的值
public int set(int field); 

//获取周几
int week = cd.get(Calendar.DAY_OF_WEEK);
System.out.println("week:"+(week-1)); 
//其实内部真正的对应是:周日~周六  [1,7]
//-1的目的就是变成0是周日,其余的正好一一对应 !

总结

  1. 毫秒数 -> Date

    //a. java.util.Date中提供了构造方法Date(long time);
    Date d = new Date(5611316516515L);
    

    //b. 上述类public void setTime(long time);
    Date dd = new Date(); //默认获取当前系统时间
    System.out.println(dd);
    dd.setTime(1726830007794L); //重新设置时间
    System.out.println(dd);

  2. Date -> 毫秒数

    //Date类中提供的方法:getTime
    public long getTime();
    
  3. Calendar -> Date

    //Calendar类中提供了public final Date getTime();
    Calendar cal = Calendar.getInstance(); //也是默认获取的是当前的系统时间
    //calendar -> date
    Date date = cal.getTime();
    
  4. Date -> Calendar

    //Calendar类中void setTime(Date date);
    Date date1 =new Date(1891800237347L);
    cal.setTime(date1);
    
import java.util.Calendar;
import java.util.Date;

/**
 * 本类用来演示: 日历类java.util.Calendar
 */
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);    //2020.7.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中提供的一些公开的静态的常量属性
        //常量的好处 - 提供程序的可读性
        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]
        //根据自己的方法可week-1 那么0就是周日1-6就会一一对应
    }
}

获取键盘键盘输入

  1. java.util.Scanner键盘类
  2. 如何构建这个Scanner对象
Scanner sc = new Scanner(System.in);
  1. 方法

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

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

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

    1. 注意点:nextLine不要和nextInt或者nextDouble混用.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值