[Java进阶]学习笔记2:毫秒值的概念和作用

1.Date类

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

毫秒:千分之一秒
作用:可以对时间和日期进行计算
可一把日期转换为毫秒进行计算,计算完毕,再转换为日期。

把日期转换为毫秒:
当前的日期:2020-11-10;
时间原点(0毫秒):1970-1-1 00:00:00

计算当前日期到原点一共多少毫秒

把毫秒转换为日期:
1天 = 24x60x60 = 86400秒 = 86400000毫秒

注意:
中国属于东八区,需要把时间加8小时

Date的构造方法

1.无参构造方法
在这里插入图片描述
Date()的空参数构造方法:
获取当前系统的时间和日期

2.有参构造方法
在这里插入图片描述
Date()的带参数构造方法:
传递毫秒值,把毫秒转换为Date日期

public class Demo01Date {
    public static void main(String[] args) {
        demo01();
        demo02();
    }

    /*
    Date()的空参数构造方法:
        获取当前系统的时间和日期
     */
    private static void demo01(){
        Date date = new Date();
        System.out.println(date);//Tue Nov 10 21:27:06 CST 2020
    }

    /*
    Date()的带参数构造方法:
        传递毫秒值,把毫秒转换为Date日期
     */
    private static void demo02(){
        Date d1 = new Date(0);
        System.out.println(d1);

        Date d2 = new Date(2081111111111L);
        System.out.println(d2);
    }

}

在这里插入图片描述

Date的成员方法

long getTime() 把日期转化为毫秒
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

package demo02.Date;

import java.util.Date;

/*
类 Date 表示特定的瞬间,精确到毫秒。

毫秒:千分之一秒
作用:可以对时间和日期进行计算
可一把日期转换为毫秒进行计算,计算完毕,再转换为日期。

把日期转换为毫秒:
    当前的日期:2020-11-10;
    时间原点(0毫秒):1970-1-1 00:00:00

    计算当前日期到原点一共多少毫秒

把毫秒转换为日期:
    1天 = 24x60x60 = 86400秒 = 86400000毫秒

注意:
    中国属于东八区,需要把时间加8小时
 */
public class Demo01Date {
    public static void main(String[] args) {
        demo03();
    }

    /*
    Date类的成员方法:
    long getTime() 把日期转化为毫秒
        返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。*/
    private static void demo03(){
        Date date = new Date();
        System.out.println(date.getTime());
    }
}

在这里插入图片描述

2.DateFormat类和SimpleDateFormat类

在这里插入图片描述

DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年 1 月 1 日 00:00:00 这一刻开始的毫秒数。

在这里插入图片描述
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

在这里插入图片描述
在这里插入图片描述
其中常用的模式有:
在这里插入图片描述
DateFormat类是日期/时间格式化子类的抽象类
作用:
格式化(也就是日期 -> 文本)、解析(文本-> 日期)
成员方法:

String format(Date date) //按照指定的模式,把Date日期格式化为符合模式的字符串
Date parse(String source) //把符合模式的字符串,解析为Date日期

DateFormat类是一个抽象类,无法直接创建对象使用,
可以使用
子类SimpleDateFormat类

构造方法:(带参数:模式)

SimpleDateFormat(String pattern) //用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。

参数:

String pattern://传递指定的模式

模式:

区分大小写
y   年
M   月
d   日
H   时
m   分
s   秒

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

注意:
模式中的字母不能更改,连接模式的符号可以改

1. format方法

使用format方法;把日期格式化为文本

String format(Date date) //按照指定的模式,把Date日期格式化为符合模式的字符串

使用步骤:
1.创建SimpleDateFormat对象,构造方法中传递指定的模式
2.调用format方法,按照构造方法指定的模式,把Date日期转化为字符串

    private static void demo01() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        Date date = new Date();
        String text = sdf.format(date);
        System.out.println(date);//Tue Nov 10 21:54:56 CST 2020
        System.out.println(text);//2020年11月10日 21时54分56秒

    }

在这里插入图片描述

2.parse方法

调用parse,把文本解析为日期

Date parse(String source) //把符合模式的字符串,解析为Date日期
使用步骤:
    1.创建SimpleDateFormat对象,构造方法中传递指定的模式
    2.调用方法parse,把符合构造方法中模式的字符串解析日期
    private static void demo02(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = null;
        try {
            date = sdf.parse("yyyy-MM-dd HH:mm:ss");
        } catch (ParseException e) {
            e.printStackTrace();
        }
        System.out.println(date);
    }

在这里插入图片描述

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

在这里插入图片描述
分析:
在这里插入图片描述

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class Demo03Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String birthday = sc.next();//用户输入出生日期,格式为:2001-11-9

        Date date = ToDate(birthday); //调用SimpleDateFormat的parse方法,将字符串出生日期转换为Date对象
        long datehaomiao = date.getTime();//获取date对象的毫秒数
        Date thistime = new Date();
        long thistimehaomiao = thistime.getTime();//获取当前的时间的毫秒数

        long birthdayhaomiao = thistimehaomiao - datehaomiao;//当前的毫秒数-出生日期的毫秒数

        long day = birthdayhaomiao/1000/60/60/24;//通过计算,求出天数
        System.out.println(day);
    }

    private static Date ToDate(String birthday) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            date = sdf.parse(birthday);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值