Date类

1.毫秒值的概念和作用

java.util.Date类表示特定的瞬间,精确到毫秒。
分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch) ”,即1970 年1月1日00:00:00 GMT)以来的指定毫秒数。

毫秒值的作用:可以对时间和日期进行计算
2099-01-032088-01-01 中间一共有多少天
可以日期转换为毫秒进行计算,计算完毕,在把毫秒转换为日期
把日期转换为毫秒:
当前的日期:2088-01-01
时间原点(0毫秒):19701100:00:00
就是计算当前日期到时间原点之间一共经历了多少毫秒
注意:
中国属于东八区,会把时间增加8个小时

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

public class DataMain {
    public static void main(String[] args) {
        //获取当前系统时间到1970年1月1日00:00:00经历了多少毫秒
        System.out.println(System.currentTimeMillis());
    }
}
2.Data类的构造方法和成员方法
package cn.itcast.day11.demo01;


import java.util.Date;

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


    //Date类的空参数构造方法
    //Date()获取当前系统的日期和时间
    public static void demo01(){
        Date date = new Date();
        System.out.println(date);
    }
    //Date类的带参数构造方法
    //Date(long date) :传递毫秒值,把毫秒值转换为Date日期
    public static void demo02(){
        Date date1 = new Date(0L);
        System.out.println(date1);
    }

    //Long getTime() 把日期转换为毫秒值(相当于System. currentTimeMillis()方法)
    //返回自1970 年1月1日00:00:00 GMT以来此Date对象表示的毫秒数。
    public static void demo03(){
        Date date = new Date();
        System.out.println(date.getTime());
    }
}

执行结果

Wed May 27 20:29:47 CST 2020
Thu Jan 01 08:00:00 CST 1970
1590582587584
3.DateFormat类

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

  1. 格式化:按照指定的格式,从Date对象转换为String对象。
  2. 解析:按照指定的格式,从String对象转换为Date对象。
    在这里插入图片描述
java.text.DateFormat :是日期/时间格式化子类的抽象类
作用:
格式化(也就是日期->文本)、解析(文本->日期)
成员方法:
String format(Date date)按照指定的模式,把Date日期,格式化为符合模式的字符串
Date parse(String source) 把符合模式的字符串,解析为Date日期
DateFormat类是一个抽象类,无法直接创建对象使用,可以使用DateFormat类的子类
java.text.simpleDateFormat extends DateFormat
构造方法:
SimpleDateFormat (String pattern)
用给定的模式和默认语言环境的日期格式符号构造Simpl eDateFormat。
参数:
String pattern:传递指定的模式
模式:区分大小写的

在这里插入图片描述

写对应的模式,会把模式替换为对应的日期和时间
“yyy-MM-dd HH:mm:ss
注意:
模式中的字母不能更改,连接模式的符号可以改变
"yyy年MM月dd日HH时mm分ss秒”
package cn.itcast.day11.demo01;

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


public class DateFormateMain {
    public static void main(String[] args) throws ParseException {
        demo01();
        demo02();

    }
    //使用DateFormat类中的方法format. ,把日期格式化为文本
    //使用步骤:
    //1.创建SimpleDateFormat对象,构造方法中传递指定的模式
    //2.调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,
    // 把Date日期格式化为符合模式的字符串(文本)
    public static void demo01(){
        SimpleDateFormat time = new SimpleDateFormat("yyy年MM月dd日HH时mm分ss秒");
        Date date = new Date();
        String r = time.format(date);
        System.out.println(r);
        System.out.println(date);
    }

    //使用DateFormat类中的方法parse,把文本解析为日期
    //使用步骤:
    //1.创建SimpleDateFormat对象,构造方法中传递指定的模式
    //2.调用Simpl eDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期
    //注意:
    //public Date parse(String source) throws ParseException
    //parse方法声明了一个异常叫ParseException
    //如果字符串和构造方法的模式不一样,那么程序就会抛出此异常
    //调用一个抛出了异常的方法,就必须的处理这个异常,要么throws继续抛出这个异常,要么try catch自己处理

    public static void demo02() throws ParseException {
         SimpleDateFormat sdf = new SimpleDateFormat("yyy年MM月dd日HH时mm分ss秒");
         Date date = sdf.parse("2018年05月21日 12时14分24秒");
        System.out.println(date);
    }
}

执行结果

20200527212925秒
Wed May 27 21:29:25 CST 2020
Mon May 21 12:14:24 CST 2018
4.练习

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

  1. 获取当前时间对应的毫秒值
  2. 获取自己出生日期对应的毫秒值
  3. 两个时间相减(当前时间-出生日期)
1.使用Scanner类中的方法next ,获取出生日期
2.使用DateFormat类中的方法parse,把字符串的出生日期解析为Date格式
3.把Date格式的出生日期转换为毫秒值
4.获取当前的日期,转换为毫秒值
5.使用当前日期的毫秒值-出生日期的毫秒值
6.把毫秒值的差值转换为天(s/1000/60/60/24)
package cn.itcast.day11.demo01;

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

//练习:
//请使用日期时间相关的API,计算出一个人已经出生了多少天。
//分析:
//1.使用Scanner类中的方法next ,获取出生日期
//2.使用DateFormat类中的方法parse,把字符串的出生日期解析为Date格式
//3.把Date格式的出生日期转换为毫秒值
//4.获取当前的日期,转换为毫秒值
//5.使用当前日期的毫秒值-出生日期的毫秒值
//6.把毫秒值的差值转换为天(s/1000/60/60/24)
public class datePractice {
    public static void main(String[] args) throws ParseException {

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的出生日期,格式为yyyy-MM-dd");
        String birthday = sc.next();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date birthdayDate = sdf.parse(birthday);
        //把Date格式的出生日期转换为毫秒值
        long birthdayDateTime = birthdayDate.getTime();

        //获取当前的日期,转换为毫秒值
        long todayTime = new Date().getTime();

        //使用当前日期的毫秒值-出生日期的毫秒值
        long time = todayTime - birthdayDateTime;

        //把毫秒值的差值转换为天(s/1000/60/60/24)
        System.out.println(time/1000/60/60/24);

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值