• java时间日期类


    时间日期类

    • 计算机中时间原点

      1970年1月1日 00:00:00

    • 时间换算单位

      1秒 = 1000毫秒

    • Date类概述

      Date 代表了一个特定的时间,精确到毫秒

    • Date类构造方法

    原因:
    1969年8月,贝尔实验室的程序员肯汤普逊利用妻儿离开一个月的机会,开始着手创造一个全新的革命性的操作系统,他使用B编译语言在老旧的PDP-7机器上开发出了Unix的一个版本。
    随后,汤普逊和同事丹尼斯里奇改进了B语言,开发出了C语言,重写了UNIX。
    1970年1月1日 算C语言的生日

    long time = System.currentTimeMillis();System.out.println(time);//1575465416955

    小结:
    1,北京时间需要在世界标准时间上加8小时。
    2,1秒=1000毫秒
    3,计算机中的时间原点为:1970年1月1日 00:00:00

    1.1 Date 类概述和构造方法

    • Date类概述

      • Date 代表了一个特定的时间,精确到毫秒
    • Date类构造方法

    方法名说明
    public Date()创建一个Date对象,表示默认时间
    public Date(long date)创建一个Date对象,表示指定时间

    Date date1 = new Date();

    把当前时间封装成一个Date对象

    Date date2 = new Date(0L);

    把从时间原点开始,过了指定毫秒的时间,封装成一个Date对象
    需要考虑时差问题。

    案例:示例代码

    package com.itheima.mydate;
    
    import java.util.Date;
    
    public class DateDemo1 {
        public static void main(String[] args) {
    //        public Date()		创建一个Date对象,表示默认时间
    //public Date(long date)	创建一个Date对象,表示指定时间
    
            //如果用空参构造创建对象 那么这个时间就表示电脑中的当前时间。
            Date date1 = new Date();
            System.out.println(date1);
    
            //如果用有参构造创建对象 从计算机的时间原点开始,过了指定毫秒的那个时间。
            Date date2 = new Date(0L);
            System.out.println(date2);//Thu Jan 01 08:00:00 CST 1970
            //从时间原点开始,过了0毫秒。
            //因为我们是在中国,我们是在东八区需要+8小时。
    
            //1970年1月1日 上午的9点
            Date date3 = new Date(3600L * 1000);
            System.out.println(date3);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    1.2 Date 类的常用方法(应用)

    • 常用方法
    方法名说明
    public long getTime()获取时间对象的毫秒值
    public void setTime(long time)设置时间,传递毫秒值
    package com.itheima.mydate;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class DateDemo2 {
        public static void main(String[] args) {
    //        public long getTime()			获取时间对象的毫秒值
    //        public void setTime(long time)		设置时间,传递毫秒值
    
            //method1();
            //method2();
    
        }
    
        private static void method2() {
            //创建日期对象
            Date date1 = new Date();
            date1.setTime(0L);
            System.out.println(date1);
        }
    
        private static void method1() {
            //把当前时间封装成一个date对象
            Date date1 = new Date();
            //获取这个date对象的毫秒值 --- 获取当前时间的毫秒值
            long time = date1.getTime();
            System.out.println(time);
    
            long time2 = System.currentTimeMillis();
            System.out.println(time2);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    1.3 SimpleDateFormat 类

    • SimpleDateFormat类概述
      • SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。

      • 我们重点学习日期格式化和解析

    SimpleDateFormat 可以对Date对象,进行格式化和解析

    常用的模式字母及对应关系如下:
    y 年
    M 月
    d 日
    H 时
    m 分
    s 秒

    2020-11-11 13:27:06 yyyy-MM-dd HH:mm:ss

    2020年11月11日 13:27:06 yyyy年MM月dd日 HH:mm:ss

    • SimpleDateFormat 的构造方法
    方法名说明
    public SimpleDateFormat()构造一个SimpleDateFormat,使用默认格式
    public SimpleDateFormat(String pattern)构造一个SimpleDateFormat,使用指定的格式
    • SimpleDateFormat类的常用方法

      • 格式化(从Date到String)
        • public final String format(Date date):将日期格式化成日期/时间字符串
      • 解析(从String到Date)
        • public Date parse(String source):从给定字符串的开始解析文本以生成日期

    案例:格式化(从 Date 到 String )

    package com.itheima.mydate;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    public class DateDemo3 {
        public static void main(String[] args) {
            //当前时间的Date对象
            Date date = new Date();
            
            //创建了一个日期格式。  构造一个SimpleDateFormat,使用指定的格式
            //SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    //        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            //public final String format(Date date):将日期格式化成日期/时间字符串
            String result1 = sdf.format(date);
            System.out.println(result1);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    案例:解析(从 String 到 Date )

    package com.itheima.mydate;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class DateDemo4 {
        public static void main(String[] args) throws ParseException {
            //创建格式
            String s = "2048-01-01";
            //解析字符串的格式必须得要和的创建的格式一模一样  不然会报错
            //SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            //public Date parse(String source):从给定字符串的开始解析文本以生成日期
            Date date = sdf.parse(s);
            System.out.println(date);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    案例:秒杀活动
    • 需求

      秒杀开始时间是2020年11月11日 00:00:00,结束时间是2020年11月11日 00:10:00,用户小贾下单时间是2020年11月11日 00:03:47,用户小皮下单时间是2020年11月11日 00:10:11,判断用户有没有成功参与秒杀活动

    • 实现步骤

      1. 判断下单时间是否在开始到结束的范围内
      2. 把字符串形式的时间变成毫秒值
    • 代码实现
    package com.itheima.mydate;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class DateDemo5 {
        public static void main(String[] args) throws ParseException {
            //开始时间:2020年11月11日 0:0:0
            //结束时间:2020年11月11日 0:10:0
            //小贾2020年11月11日 0:03:47
            //小皮2020年11月11日 0:10:11
            //1.判断两位同学的下单时间是否在范围之内就可以了。
            //2.要把每一个时间都换算成毫秒值。
            String start = "2020年11月11日 0:0:0";
            String end = "2020年11月11日 0:10:0";
            
            String jia = "2020年11月11日 0:03:47";
            String pi = "2020年11月11日 0:10:11";
            //创建格式   构造一个SimpleDateFormat,使用默认格式
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
            //public Date parse(String source):从给定字符串的开始解析文本以生成日期
            //public long getTime()  获取时间对象的毫秒值
            //开始时间的毫秒值
            long startTime = sdf.parse(start).getTime();
            //结束时间的毫秒值
            long endTime = sdf.parse(end).getTime();
            //小贾下单并付款的毫秒值
            long jiaTime = sdf.parse(jia).getTime();
            //小皮单并付款的毫秒值
            long piTime = sdf.parse(pi).getTime();
    
            if(jiaTime >= startTime && jiaTime <= endTime){
                System.out.println("小贾同学参加上了秒杀活动");
            }else{
                System.out.println("小贾同学没有参加上秒杀活动");
            }
            System.out.println("------------------------");
            if(piTime >= startTime && piTime <= endTime){
                System.out.println("小皮同学参加上了秒杀活动");
            }else{
                System.out.println("小皮同学没有参加上秒杀活动");
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    SimpleDateFormat 小结:

    1. 格式化(从 Date 到 String )
      public final String format(Date date): 把时间按照固定格式进行展示

    2. 解析(从 String 到 Date )
      public Date parse(String source):需要对时间进行计算

  • 相关阅读:
    代码随想录训练营Day 32|Python|Leetcode|● 738.单调递增的数字
    Allegro DFM Ravel Rule PAD到板边间距检查
    Python实现SSA智能麻雀搜索算法优化XGBoost分类模型(XGBClassifier算法)项目实战
    NXP BootLoader源码分析并改写SD卡启动
    可以识别到U盘,无法挂载,dev/目录下只有sda,没有sda1问题
    Springboot+dubbo框架升级踩坑记
    黑马程序:springboot
    JavaScript 进阶必备:掌握 Symbol 新标识符用法
    【热力】基于matlab模拟矩形板上二维温度分布
    在博客园随笔中插入3D分子模型
  • 原文地址:https://blog.csdn.net/weixin_59466355/article/details/127452974