Date类,DateFormat类,Calendar类

17 篇文章 0 订阅
5 篇文章 0 订阅

日期类Date

java.util.Date(类):它可以表示一个“时间”,精度为毫秒(1秒 = 1000毫秒)。

构造方法:

  1. Date():使用当前的系统时间构造一个Date对象。
  2. Date(long m):使用从1970年1月1日0时开始的一个“毫秒值”构造一个Date对象。

成员方法:

  1. public long getTime():返回自1970年1月1日以来,由 Date对象表示的00:00:00 GMT的毫秒数。
  2. public void setTime(long time):设置当前Date对象的毫秒值。
代码演示
public class Demo05 {
    public static void main(String[] args) {
        //1.构造一个Date对象
        Date d1 = new Date();
        System.out.println(d1);//Thu Jul 09 11:11:12 CST 2020
        System.out.println(d1.getTime());//1594264648602
        //更改d1的时间,setTime(毫秒值)
        d1.setTime(1000 * 3600);
        System.out.println("更改了d1的时间:");
        System.out.println(d1);
        System.out.println(d1.getTime());

        //2.构造第二个Date对象:使用1970年1月1日0时开始的一个毫秒值构造。
        Date d2 = new Date(1000 * 3600);
        System.out.println(d2);//Thu Jan 01 09:00:00 CST 1970(因为我们是东八区,所以从8点开始 + 1小时, 09时)
        System.out.println(d2.getTime());//3600000

        Date d3 = new Date(-1000 * 3600 * 24);
        System.out.println(d3);//Wed Dec 31 08:00:00 CST 1969
        System.out.println(d3.getTime());//-86400000
    }
}

日期格式化类DateFormat

  1. java.text.DateFormat(抽象类):它可以对Date对象,进行格式设置,将转换为指定格式的字符串。

  2. DateFormat是抽象类,不能创建对象。我们可以使用它的子类:SimpleDateFormat

  3. SimpleDateFormat的构造方法:

  4. SimpleDateFormat(String pattern):使用一个String表示的“模式”来构造一个SimpleDateFormat对象。

     模式:在API中查询:
     	y:年
     	M:月
     	d:日期
     	H:小时
     	m:分钟
     	s:秒
     	注意:大小写
    

SimpleDateFormat的成员方法

  1. public String format(Date date):将Date对象转换为我们指定模式的字符串。
  2. public Date parse(String dateStr):将String表示的日期,转换为Date对象。
代码演示:(转换字符串的日期格式)
public class Demo07 {
    public static void main(String[] args) throws ParseException {
        /*
            程序中已有一个字符串:
         String str = "2020年07月09日”;
           程序要将这个字符串转换为:”2020-07-09”的格式。

         */
        String str = "2020年07月09日";

        //将这个字符串转换为Date
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日");
        Date date = sdf1.parse(str);

        //将Date转换为另一种格式的String
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
        str = sdf2.format(date);
        System.out.println(str);

    }
}
代码演示:(计算来到世界多少天)
public class Demo08 {
    public static void main(String[] args) throws ParseException {
        //让用户在控制输入一个"生日",例如:"2000-03-27"
        //我们程序要能够计算出用户从出生到现在共经历了"多少天"

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您的生日(yyyy-MM-dd):");
        String birthday = sc.next();//"2000-03-27"

        //做一系列的操作
        //1.将生日字符串转换为Date
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date birthDate = sdf.parse(birthday);
        //2.将生日Date提取毫秒值
        long t1 = birthDate.getTime();

        //3.获取当前系统时间的毫秒值
        long t2 = new Date().getTime();
        System.out.println("你出生到现在一共:" + ((t2 - t1) / 1000 / 3600 / 24) + " 天" );
    }
}

日历类_Calendar

  1. java.util.Calendar(抽象类):它表示“日历”可以进行日期运算。
  2. 它是抽象类,不能创建对象。它也有子类:GregorianCalendar,可以直接用这个子类。
    另外,也可以调用Calendar的静态方法:getInstance():获取一个子类(GregorianCalendar)对象。

成员方法

  1. public int get(int field):获取某个字段的值。
  2. public void set(int field,int value):获取某个字段为value值。
  3. public void add(int field,int value):为某个字段增加/减少value值。
代码演示:
public class Demo09 {
    public static void main(String[] args) {
        //Calendar类是一个抽象类,不能创建对象
        //我们可以调用Calendar的静态方法:getInstance()获取它的子类对象:
        Calendar c1 = Calendar.getInstance();
        System.out.println(c1);

        //1.成员方法:public int get(int field):获取某个字段的值
        int year = c1.get(Calendar.YEAR);   //年
        int month = c1.get(Calendar.MONTH) + 1;//月
        int date = c1.get(Calendar.DAY_OF_MONTH);//日
//        int hour = c1.get(Calendar.HOUR);//(上下午)小时
        int hour = c1.get(Calendar.HOUR_OF_DAY);//(全天)小时
        int minute = c1.get(Calendar.MINUTE);//分
        int second = c1.get(Calendar.SECOND);//秒

        int week = c1.get(Calendar.DAY_OF_WEEK);//星期返回的是:1-7的值,分别代表:"星期日","星期一","星期二",....,"星期六"

        System.out.println(year + "-" + month + "-" + date + " " + hour + ":" + minute + ":" + second);
        System.out.println(getWeek(week));

        //2.成员方法:public void set(int field,int value):设置某个字段的值
        //例如:要看一下:1998-09-14那天是星期几
        //1.获取一个Calendar子类对象
        Calendar c2 = Calendar.getInstance();//当前系统时间
        //2.设置为1998-09-14
        c2.set(Calendar.YEAR, 1998);
        c2.set(Calendar.MONTH, 9 - 1);
        c2.set(Calendar.DAY_OF_MONTH, 14);

        //设置完毕,c2内部的时间就变成了:1998-09-14
        //获取星期
        week = c2.get(Calendar.DAY_OF_WEEK);
        System.out.println("1998-09-14那天是:" + getWeek(week));

        //3.成员方法:public void add(int field,int value):为指定的字段增加/减少指定的值
        //例如:算一下20个月后,是哪年,哪月,哪一天,星期几
        //1.获取一个Calendar的子类对象
        Calendar c3 = Calendar.getInstance();//当前系统时间
        //2.为月份增加20
        c3.add(Calendar.MONTH, 20);

        //3.获取各个字段
        year = c3.get(Calendar.YEAR);
        month = c3.get(Calendar.MONTH) + 1;
        date = c3.get(Calendar.DAY_OF_MONTH);

        week = c3.get(Calendar.DAY_OF_WEEK);
        System.out.println("20个月后是:" + year + " 年 " + month + " 月 " + date + " 日 " + getWeek(week));
    }

    //查表法
    public static String getWeek(int w) {//1-7
        //定义表
        String[] arr = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
        //查表
        return arr[w - 1];
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值