现在用到的Calendar类和过时的Date类

Calendar类和Date类

java8提供的api
Date类:
Date类的时间从1970.1.1开始记起
Date方法大部分已经被弃用
首先建立一个Date的实例对象:Date d=new Date();

  • 直接输出d即可获取当前的时间
  • 获取年:d.getYear()   月:d.getMonth()   日:d.getDate()
    年从1900开始记起,月份是0-11开始记起
  • 获取时:d.getHours()    分:d. getMinutes()    秒:d.getSeconds()
  • 时间的改变:可以先获取当前的时间,然后加上所需要的改变的时间值,最后再set回去
  • 直接输出的时间格式不符合正常的规范,我们可以使用SimpleDateFormat来处理日期格式,然后调用我们设置好的格式进行格式化,使用format方法进行进行格式化同时返回String。同样,也能将字符串通过parse方法转换成Date类

    例子是:
         //格式化   处理日期格式SimpleDateFormat
        SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //处理日期的格式类似sf,格式化的方法format,把日期类型d2转换成str
        String str=sf.format(d2);
        //也能将字符串转换成Date类
        Date d=sd.parse(str);
        System.out.println(str);

总体代码实现如下:

public class DateDemo {
    public static void main(String[] args) {
        Date d=new Date(0);//传入0  从初始化给的默认值开始
        System.out.println(d);
        //如果不传入0  默认是电脑现在的时间
        Date d2=new Date();
        System.out.println(d2);
        //从1900开始记起
        System.out.println(d2.getYear()+1900);
        //月份是0-11记起
        System.out.println(d2.getMonth()+1);
        System.out.println(d2.getDate());
        System.out.println(d2.getHours()+":"+d2.getMinutes()+":"+d2.getSeconds());
        System.out.println("-------------");
        //向后推五天
        d2.setDate(d2.getDate()+5);
        System.out.println(d2.getMonth()+1);
        System.out.println(d2.getDate());
        //在此时,在向后推三个小时
        d2.setHours(d2.getHours()+3);
        System.out.println(d2);
        //Time 毫秒  1  1000
        //用time的方式,向后走五天
        d2.setTime(d2.getTime()+1000*60*60*24*5);
        System.out.println(d2);

        //格式化   处理日期格式SimpleDateFormat
        SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //处理日期的格式类似sf,格式化的方法format,把日期类型d2转换成str
        String str=sf.format(d2);
        System.out.println(str);
    }
}


Calendar类:
现在用到的时间类为Calendar类,它能够实现和Date类似的功能。
Calendar是一个抽象类,从1970.1.1记起
实例化Calendar类有两个方法

  • Calendar.getInstance()
  • new GregorianCalendar()     //GregorianCalendar是Calendar的一个子类,名字是格里高利
    它们实例化.getTime()就能获取到当前的时间,即一个Date对象,也就是
    Date d=ca.getTime();


    Calendar类中的字段:
  • Calendar.YEAR(年)
  • Calendar.MONTH(月)   //也是从0开始,所以要加一
  • Calendar.DATE(日)
  • Calendar.HOUR(时)
  • Calendar.MINUTE(分)
  • Calendar.SECOND(秒)
  • Calendar.DAY_OF_WEEK(一周内周几 其中周天是day1)
  • Calendar.DAY_OF_MONTH(月中的第几天)

Calendar类中的方法:

  • getTime()方法,得到的是一个Date类型的实例
  • setTime()方法,将Date类型的实例给到Calendar类
  • add(a,b)方法,a填的是Calendar类中的字段名,b是±的数量
  • get(a)方法,a填的是Calendar类中的字段名,返回int
public class CalendarDemo {
    public static void main(String[] args) {
        //Calendar是一个是抽象类,不能直接实例化
        //实例化的方法1
        Calendar ca1=Calendar.getInstance();
        System.out.println(ca1.getTime());   //获取当前的时间
        System.out.println(ca1.getTime().getTime());    //毫秒
        //实例化的方法2
        Calendar ca2=new GregorianCalendar();  //GregorianCalendar是Calendar的一个子类,名字是格里高利
        System.out.println(ca2.getTime());

        //练习方法
        //向后加5天
        //Calendar.DAY_OF_MONTH  属性 字段 日期
        //add操作属性
        //DAY_OF_MONTH本月中的日期
//        ca1.add(Calendar.DAY_OF_MONTH,+5);
        System.out.println(ca1.get(Calendar.DAY_OF_MONTH));
        System.out.println("----------------");
        System.out.println(ca1.get(Calendar.YEAR));
        System.out.println(ca1.get(Calendar.MONTH)+1);
        System.out.println(ca1.get(Calendar.DATE));
        System.out.println(ca1.get(Calendar.HOUR));
        System.out.println(ca1.get(Calendar.MINUTE));
        System.out.println(ca1.get(Calendar.SECOND));
        //周几  周天day1
        System.out.println("---------------------");
        System.out.println(ca1.get(Calendar.DAY_OF_WEEK));
        //向后走一个月
        ca1.add(Calendar.MONTH,+1);
        System.out.println(ca1.get(Calendar.MONTH)+1);

        SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d=ca1.getTime();
        System.out.println(s.format(d));
    }
}

小例子:
控制台可输入一个字符串 2019-09-08
要给Calendar用,并通过Calendar向后推两个月加8天

        Scanner sc=new Scanner(System.in);
        String s=sc.next();
        SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");
        Date d1=sd.parse(s);
        Calendar c=Calendar.getInstance();
        c.setTime(d1);
        c.add(Calendar.DATE,+8);
        c.add(Calendar.MONTH,+2);
        Date d=c.getTime();
        String b=sd.format(d);
        System.out.println(b);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值