12.2 Date类:getTime方法、DateFormat抽象类与子类SimpleDateFormat(format与parse方法)、Calendar抽象类与常用方法

本文详细介绍了Java中Date类的构造方法和getTime方法,DateFormat类的format和parse方法,以及Calendar类的常用方法,包括get、set、add和getTime。并提供了实际操作日期时间API的练习,如计算出生天数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

Date类

两个构造方法

常用方法

列:Date两个构造方法、getTime()方法联系

DateFormat类

format方法,parse方法

 练习:    请使用日期时间相关的API,计算出一个人已经出生了多少天。

Calendar类

常用方法:get方法、set方法、add方法、getTime方法

列:get/set方法、add方法、getTime方法练习


Date

java.util.Date 类 表示特定的瞬间,精确到毫秒。

两个构造方法

  • public Date() :分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。(获取当前日期)
  • public Date(long date) :分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元 (epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。(将长整型的数据【毫秒值】转化成Date格式的数据)

常用方法

public long getTime() 把日期对象转换成对应的时间毫秒值

列:Date两个构造方法、getTime()方法联系

public static void main(String[] args) {
    demo01();//Date类的空参数构造方法
    demo02();//Date类的带参数构造方法
    demo03();
}
/*
    long getTime() 把日期转换为毫秒值(相当于System.currentTimeMillis()方法)
      返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
 */
private static void demo03() {
 Date date=new Date();
    long time = date.getTime();
    System.out.println(time);//1597762426601
}
/*
        Date类的带参数构造方法
        Date(long date) :传递毫秒值,把毫秒值转换为Date日期
     */
private static void demo02() {
    Date date=new Date(0L);
    System.out.println(date);//Thu Jan 01 08:00:00 CST 1970

}

/*
     Date类的空参数构造方法
     Date() 获取当前系统的日期和时间
  */
private static void demo01() {
    Date date=new Date();//获取当前系统的日期和时间
    System.out.println(date);//Tue Aug 18 22:53:46 CST 2020
}

DateFormat

java.text.DateFormat 是日期/时间格式化子类的抽象类,这个类可以完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。

由于DateFormat为抽象类,不能直接使用,所以要用子类 java.text.SimpleDateFormat 。这个类需要一个 模式(格式)来指定格式化或解析的标准。

构造方法
public SimpleDateFormat(String pattern)用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
 String pattern:传递指定的模式 如:yyyy-MM-dd HH:mm:ss


 

 

常用的格式规则为:

标识字母(区分大小写)

含义

y

M

d

H

m

s

format方法,parse方法

public String format(Date date) :将Date对象格式化为字符串。

public Date parse(String source) :将字符串解析为Date对象。

列:文本转化成Date格式数据、Date数据转化成文本

​
package com.lws.demo03.DateFormat;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo01DateFormat {
    public static void main(String[] args) throws ParseException {
        demo01();
        demo02();

    }

    //将指定格式的字符串转化为日期
    public static void demo01() throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 hh时MM分ss秒");
        Date date = simpleDateFormat.parse("2020年08月18日 12时08分13秒");
        System.out.println(date);//Tue Aug 18 00:00:13 CST 2020

    }

    /*String format(Date date)  按照指定的模式,把Date日期,格式化为符合模式的字符串*/
//将日期转化成指定格式的字符串
    public static void demo02() {
        //1.创建SimpleDateFormat对象,构造方法中传递指定的模式
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 hh时MM分ss秒");
        Date date = new Date();//获取当前时间
        String s = simpleDateFormat.format(date);
        System.out.println(s);//2020年08月18日 11时08分39秒
    }
}

​

 练习:    请使用日期时间相关的API,计算出一个人已经出生了多少天。


import java.util.Calendar;
public static void main(String[] args) throws ParseException {
    System.out.println("请输入您的出生日期,格式:yyyy-MM-dd");
    Scanner scanner = new Scanner(System.in);
    String myDate = scanner.next();
    //2.使用DateFormat类中的方法parse,把字符串的出生日期,解析为Date格式的出生日期
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    Date myBirthdayTime = simpleDateFormat.parse(myDate);
    long time = myBirthdayTime.getTime();//将出生日期转化成毫秒
    long newTime = new Date().getTime();//获取当前时间
    long temp = newTime - time;
//        System.out.println(time+"\t"+newTime+"\t"+temp);

    System.out.println("我出生了:"+temp/1000/24/60/60+"天");

Calendar

java.util.Calendar 是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。Calendar为抽象类,Calendar类在创建对象时并非直接创建,而是通过静态方法创建

public static Calendar getInstance() :使用默认时区和语言环境获得一个日历

import java.util.Calendar;
public class Demo01Calendar {
    public static void main(String[] args) {
        Calendar calendar=Calendar.getInstance();//多态 getInstance()返回Calendar类的子类对象
        System.out.println(calendar);//java.util.GregorianCalendar[time=1597763448258,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=7,WEEK_OF_YEAR=34,WEEK_OF_MONTH=4,DAY_OF_MONTH=18,DAY_OF_YEAR=231,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=11,HOUR_OF_DAY=23,MINUTE=10,SECOND=48,MILLISECOND=258,ZONE_OFFSET=28800000,DST_OFFSET=0]
    }
}

常用方法:get方法、set方法、add方法、getTime方法

  • public int get(int field) :返回给定日历字段的值。
  • public void set(int field, int value) :将给定的日历字段设置为给定值。
  • public abstract void add(int field, int amount) :根据日历的规则,为给定的日历字段添加或减去指定的时间量。
  • public Date getTime() :返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。

   

 

列:get/set方法、add方法、getTime方法练习

add方法可以对指定日历字段的值进行加减操作,如果第二个参数为正数则加上偏移量,如果为负数则减去偏移量

getTime方法 :Calendar中的getTime方法并不是获取毫秒时刻,而是拿到对应的Date对象

import java.util.Calendar;
import java.util.Date;
ublic class Demo02Calendar {
    public static void main(String[] args) {
        demo01();
        demo02();
        demo03();
        demo04();
    }
  
    //public int get(int field):返回给定日历字段的值。 
    public static void demo01() {
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int hour = calendar.get(Calendar.HOUR);
        int minute = calendar.get(Calendar.MINUTE);
        int second = calendar.get(Calendar.SECOND);
        System.out.println(year + "年" + hour + "时" + minute + "分" + second + "秒");//2020年11时22分3秒
    }

    /*
          public void set(int field, int value):将给定的日历字段设置为给定值。
          参数:
              int field:传递指定的日历字段(YEAR,MONTH...)
              int value:给指定字段设置的值
       */
    public static void demo02() {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, 2020);
        c.set(Calendar.MONTH, 8);
        c.set(Calendar.DATE, 18);
/*        //同时设置年月日,可以使用set的重载方法
        calendar.set(8888,8,8);*/
        System.out.println(c.get(Calendar.YEAR) + "年" + c.get(Calendar.MONTH)
                + "月" + c.get(Calendar.DATE) + "日");//2020年8月18日

    }
    /*
        public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
        把指定的字段增加/减少指定的值
        参数:
            int field:传递指定的日历字段(YEAR,MONTH...)
            int amount:增加/减少指定的值       正数:增加       负数:减少
     */
    public static void demo03() {
        Calendar c=Calendar.getInstance();
        c.add(Calendar.YEAR,2);
        c.add(Calendar.MONTH,12);
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        System.out.println(year+"年"+month+"月");//2023年7月
    }

    /*
        public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
        把日历对象,转换为日期对象
     */
    public static void demo04() {
        Calendar c=Calendar.getInstance();
        Date d = c.getTime();//将日历对象转化为日期对象
        System.out.println(d);//Tue Aug 18 23:22:03 CST 2020
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值