Date

概述

java.util.Date类表示特定的瞬间,精确到毫秒。
继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对象。
public Date() :分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
public Date(long date) :分配Date对象并初始化此对象,以表示自从标准基准时间(称为”历元( epoch )” ,即1970年1月1日00:00:00 GMT )以来的指定毫秒数。

作用

java.util. Date:表示日期和时间的类类Date表示特定的瞬间,精确到毫秒。
毫秒:千分之一秒1000毫秒=1秒
特定的瞬间:一个时间点,一刹那时间
2088-08-08 09:55:33:333瞬间
2088-08-08 09:55:33:334瞬间
2088-08-08 09:55:33:334瞬间
毫秒值的作用:可以对时间和日期进行计算
2099-81-83到2088-01-01中间一共有多少天
可以日期转换为毫秒进行计算,计算完毕,在把毫秒转换为日期
把日期转换为毫秒:
时间原点(0) :1970年1月1日00:00:00
就是计算当前日期到时间原点之间一共经历了多少毫秒

注意:

中国属于东八区,会把时间增加8个小时1970年1月1日08:00:00

把毫秒转换为日期:
1天=24x 60x 60= 86400秒=86400 x 1000= 86400000毫秒

  1. public static void main(string[] args) {
  2. System.out .println(System.currentTimeMillis ());
  3. //获取当前系统时间到1970年1月1日00:00:00经历了多少毫秒
  4. }

Date类的空参数构造方法:

Date()获取的就是当前系统的日期和时间

  1. public class Demoe2Date {
  2. public static void main(string[] args) { demool();
  3. private static void demo1() {
  4. Date date = new Date();
  5. System.out.println(date);
  6. }

Date类的带参数构造方法:

Date(Long date) :传递毫秒值,把毫秒转换为Date日期

  1. private static void demoe2() {
  2. Date d1 = new Date(OL);
  3. System.out.println(d1);//Thu Jan 01 08:00:00 CST 1970
  4. Date d2 = new Date(158111111111L);
  5. System.out.println(d2);///sun Jan 05 07:45:11 CST 1975

Date类的成员方法

Long getTime()把日期转换为毫秒(相当于System.currentTimeMillis())返回自1970年1月1日00:00:00 GMT以来此Date对象表示的毫秒数。

private static void demoe3() {
  Date date = new Date();
  long time = date.getTime();
  System.out.println(time);
}

DateFormat类

概述

java.text. DateFormat:是日期/时间格式化子类的抽象类

格式化:按照指定的格式,从Date对象转换为String对象。
解析:按照指定的格式,从String对象转换为Date对象。

作用:

格式化(也就是日期->文本)、解析(文本->日期)
成员方法
String format (Date date) 按照指定的模式,把Date日期,格式化为符合模式的字符串
Date parse(String source)把符合模式的字符串,解析为Date日期
DateFormat类是一个抽象类,无法直接创建对象使用,可以使用DateFormat的子类
java.text. SimpleDateFormat extends DateFormat
构造方法
SimpleDateFormat(String pattern)用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat参数:
string pattern: 传递指定的模式
模式:区分大小写的

y 年
m 月
d 天
h 时
m 分
s 秒

写对应的模式,会把模式替换为对应的日期和时间
“yyyy-MM-dd HH:mm:ss”
“yyyy年MM月dd日HH时mm分ss秒

注意:

“yyyy年MM月dd日HH时mm分ss秒“
模式中的字母不能更改,连接模式的符号可以改变

使用DateFormat类中的方法format,把日期格式化为文本
String format (Date date) 按照指定的模式,把Date日期,格式化为符合模式的字符串

使用步骤:

1创建simpleDateFormat对象,构造方法中传递指定的模式
2·调用simpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串(文本)

private static void demoe1() {
  //1.创建SimpleDateFormat对象,构造方法中传递指定的模式
  SimpleDateFormat sdf = new SimpleDateFormat( pattern: "yyyy-MM-dd HH:mm:ss");
  //2,调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串(文本)
  Date date = new Date();
  string text = sdf.format (date);
  System.out.println(date);
  System.out.println(text);
}
private static void demoe2() throws ParseException {
//1.创建SimpleDateFormat对象,构造方法中传递指定的模式
SimpleDateFormat sdf = new SimpleDateFormat( pattern: "yyyy年MMAdd日HH时mm分ss秒");
//2,调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期Date date =sdf.parse( source: "2088年08月08日17时01分10");
System.out.println(date);

练习:

分析:

请使用日期寸间相关的API,计算出一个人已经出生了多少天。
1,使用scanner类中的方法next,获取出生日期
2,使用DateFormat类中的方法parse,把字符串的出生日期解析为Date格式
3.把Date格式的出生日期转换为毫秒值
4,获取当前的日期,转换为毫秒值
5,使用当前日期的毫秒值-出生日期的毫秒值
6,把毫秒值的差值转换为天(s/1000/60/60/24)

代码

    public static void main(String[] args) throws ParseException {
        //1,使用Scanner类中的方法next,获取出生日期
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您得到出生日期,格式为yyyy-MM-dd HH:mm:ss");
        string birthdayDatestring = sc.next();
        //2.使用DateFormat类中的方法parse,把字符串的出生日期解析为Date格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date birthdayDate = sdf.parse(birthdayDatestring);
        //3.把Date格式的出生日期转换为毫秒值
        long birthdayDateTime = birthdayDate.getTime();
        //4,获取当前的日期,转换为毫秒值
        long todayTime = snowDate().getTime();
        //5·使用当前日期的毫秒值-出生白期的童秒值
        long time = todayTime - birthdayDateTime;
        //6,把毫秒值的差值转换为天(s/1000/60/60/24)
        System.out.println(time / 1000 / 60 / 60 / 24);
    }

calendar类

创建对象方式

Calendar c= Calendar.newlnstance);
获取日历类对象

成员方法

int getint n); 获取指定日历字段信息
void set(int n,int value);

将指定日历字段设置为指定值

void add(int n,int value); 将指定日历字段增加或减少指定的值

public static void main(String[] args) {//获取日历类对象
        Calendar c = calendar.getInstance();
        //get方法
        int year = c.get(calendar.YEAR);
        System.out.println(year);
        int month = c.get(calendar.MONTH) + 1;
        System.out.println(month);
        System.out.println("-----------");
        //set方法
        c.set(Calendar.YEAR, 2088);
        year = c.get(calendar.YEAR);
        System.out.println(year);
        System.out.println(" -----------");
        //ladd方法
        c.add(calendar.YEAR, 2);
        year = c.get(calendar.YEAR);
        System.out.println(year);
    }