• jdk7新增时间类Date,SimpleDateFormat,Calendar


    Date

    
    
    
    
    
    
            //需求1 打印时间远点开始一年后的时间
    
            extracted();
    
            //需求2 定义任意两个date对象  比较那个时间在前 哪个在后
    
            Random r=new Random();
    
            Date date1=new Date(Math.abs(r.nextInt()));
            Date date2=new Date(Math.abs(r.nextInt()));
    
            System.out.println(date1);
            System.out.println(date2);
            if (date1.getTime()> date2.getTime()){
                System.out.println("date1时间大");
            }else{
                System.out.println("date2时间大");
            }
        }
    
        private static void extracted() {
            //获取时间原点
            Date d=new Date(0l);
    
            //获取毫秒值
            long time = d.getTime();
            //获取一年的毫秒值
            time=time+1000l*60*60*24*365;
    
            d.setTime(time);
            System.out.println(d);
    
    • 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

    小结

    在这里插入图片描述

    SimpleDateFormat

    • 格式化:把时间变成我们喜欢的格式
    • 解析:把字符串表示的时间变成Date对象(然后用getTime方法获取毫秒值)

    在这里插入图片描述
    在这里插入图片描述

      //空参构造
            SimpleDateFormat sdf1=new SimpleDateFormat();
            //new出一个原点时间
            Date d1=new Date();
            //这个需要传入你要改变的时间
            String str1 = sdf1.format(d1);
            System.out.println(str1);//2023/10/12 下午12:51  空参构造默认模式
    
    
            SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss EE");
            //new出一个原点时间
            Date d2=new Date();
            //这个需要传入你要改变的时间
            String str2 = sdf2.format(d2);
            System.out.println(str2);
            //2023-10-12 12:57:02 周四 周四 这是用带参构造生成的
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    格式化

     //解析 parse 字符串获取日期对象
            String s="2023-10-12 12:57:02";
            SimpleDateFormat sdf3=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
                Date date = sdf3.parse(s);
                System.out.println(date.getTime());
                //1697086622000 打印结果
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    解析

    练习1

    把2000-11-11 格式改为 2000年11月11日

      
    
            String s="2000-11-11";
    
    
      
    
                //解析
                SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd");
    
                Date date = sdf1.parse(s);
    
    
                //格式化
                SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd");
                String s1 = sdf2.format(date);
                System.out.println(s1);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    练习2

    在这里插入图片描述

      //小假下单付款时间 2023年11月11号 0:01:00
            //秒杀开始时间 2023年11月11号 0:0:0
            //秒杀结束时间 2023年11月11号 0:10:0
    
    
            String buy="2023年11月11号 0:11:00";
            String start="2023年11月11号 0:0:0";
            String end="2023年11月11号 0:10:0";
    
    
            //解析得到 date对象
            SimpleDateFormat sdf1=new SimpleDateFormat("yyyy年MM月dd号 HH:mm:ss");
            Date buyDate = sdf1.parse(buy);
            Date startDate = sdf1.parse(start);
            Date endDate = sdf1.parse(end);
    
            //用对想得到毫秒值
            if(buyDate.getTime()>=startDate.getTime()&&buyDate.getTime()<=endDate.getTime()){
                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

    Calendar

    以往的知识把时间加一个月比较复杂 这时候这个Calendar就发挥了作用
    在这里插入图片描述
    在这里插入图片描述

    
    import java.util.Calendar;
    import java.util.Date;
    
    public class api171 {
        public static void main(String[] args) {
            Calendar c = Calendar.getInstance();//日历类是一个抽象类 所以不能直接new出来  可以这样获取日历对象
            //底层原理 他会把事件中的纪元 年月日分秒星期等都存在一个数组里
            //细节二:  月份打印出来的范围是0到11  0相当于1月
            //星期在老外眼中星期日相当于i星期一
    
    
            //修改一下日历代表的事件
            Date d=new Date(0l);//代表new出来一个事件是1970哪个
            c.setTime(d);
            System.out.println(c);
    
    
            //getTimeMillis方法与上同理不做演示
    
    
    
    
            //add方法第一个为类型  第二个为要加的数量
            c.add(Calendar.MONTH,1);
            //打印结果1970
            //2
            //1
            //星期日
    
    
            int year = c.get(Calendar.YEAR);
            System.out.println(year);//单独获取年份
            int month = c.get(Calendar.MONTH)+1;
            System.out.println(month);
            int date = c.get(Calendar.DAY_OF_MONTH);
            System.out.println(date);//获取日期
            int week = c.get(Calendar.DAY_OF_WEEK);
            System.out.println(getWeek(week));//获取是星期  但是是1234567这种形式  我们想要的是星期一这种形式 用一个方法实现
    
    
            //1970
            //1
            //1
            //星期四  打印结果
            //第一个为要修改的类型  第二个为修改的结果
    
            c.set(Calendar.YEAR,2000);
            //2000
            //1
            //1
            //星期四
            //其他也是一样的方法
            
        }
        public static String getWeek(int index){
    
            String arr[]={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
            //0索引为空 因为0索引不用填写   1索引对应星期天.  是因为老外的星期一是 我们的星期天
            return arr[index];
        }
    }
    
    
    • 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
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    小结

    在这里插入图片描述

  • 相关阅读:
    SpringBoot 快速开发
    【数据库——MySQL(实战项目1)】(1)图书借阅系统
    Ubuntu18.04 redis 哨兵模式搭建的步骤
    前端包管理器:深入理解npm和yarn
    发布Android库至MavenCentral详解
    9_Vue事件修饰符
    四、npm与包
    数据结构初阶--顺序表(讲解+C++类模板实现)
    QT-界面控件学习笔记
    数据治理浅析
  • 原文地址:https://blog.csdn.net/nie2459010516/article/details/133786840