Java中Date类以及对时间的一些相关处理(纯纯)

一、引入:

个人简介:本人是一所普通二本院校的计算机专业的大二学生, 曾经在大一也是非常的迷茫, 现如今对Java产生浓厚的兴趣,已经计划好了自己的学习路线,对Java这条路线的详细讲解,可参考b站动力节点的老杜的路线讲解视频,(动力节点的一系列教学视频都非常详细易懂,对初学者非常友好) 【Java零基础教程视频(适合Java 0基础,Java初学入门)】 https://www.bilibili.com/video/BV1Rx411876f/?p=737&share_source=copy_web&vd_source=af9fc3616fc27f6d911b4049964168ea
在学习的路上从不缺少经验的分享者,而我很荣幸称为其中之一,接下来就让我们进入主题吧

二、Date类的简介

1.所在包 java.util.Date
2:主要的两个构造方法: new Date():获取当前系统时间(日期格式前默认外国时间表达式:例如:Sat Nov 05 17:39:52 CST 2022,之后的内容会涉及 SimpleDateFormat 类, 测试类有详细讲解)

三、Date的使用(重点)

(1)Date 与String类型的相互转化

1.这两个类的相互转化需要用到SimpleDateFormat 中的几个方法:
------1. format(Date date)(Date——>String)
------2. parse(String s)(String——>Date)
废话不多说直接上例题:(好理解)

程序一、new Date()的使用,以及SimpleDateFormat 的使用

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


public class TestDate01  {
    public static void main(String[] args) throws Exception {
        //知识点1(获取系统当前日期)
        Date nowtTime=new Date(); //获取系统当前日期
        System.out.println(nowtTime);//默认输出(没重编格式之前)外国式的日期

        //知识点2(Date -----> String)
        SimpleDateFormat simp=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");//指定:日期的格式
        String date01=simp.format(nowtTime);//将日期格式转化为String
        System.out.println(date01);//输出重编日期格式后的日期

        //知识点3(String ------> Date)
        String time ="2008-08-09 15:01:05 666";
        //在new SimpleDateFormat("日期字符"),格式必须和日期字符串相同
        SimpleDateFormat simp2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        Date time2=simp2.parse(time);//(转化为Date形式)  得在main方法后 加 throws Exception 方可处理parse()方法出现的异常
        System.out.println(time2);



    }
}

程序2:new Date(long date) :计算从1970加上毫秒数的时间

 import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class TestDate03 {
        public static void main(String[] args) {
            Date time1=new Date(1);
            Date time2 = new Date(24*60*60*1000);
    
            SimpleDateFormat simp1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println(simp1.format(time1));//1970-01-01 08:00:00  (没加)
            System.out.println(simp1.format(time2));// 1970-01-02 08:00:00 这是加了一天毫秒的时间
    
            //输出昨天当前这个点的时间 (获取1970至今的当前毫秒数 - 一天的毫秒数 = 昨天当前点的时间)
            System.out.println(simp1.format(System.currentTimeMillis()-24*60*60*1000));
        }
    }

获取毫秒数(System.currentTimeMillis())

主要的内容有:
1.获取从1970年到至今的毫秒数
2.利用该方法计算一个程序的运行时间

public class TestDate02 {
    public static void main(String[] args) {
        //1.获取1970至今的毫秒数,并输出
        long nowTimeMills=System.currentTimeMillis();
        System.out.println(nowTimeMills);

        //2.利用该方法计算一个程序所用时间
        long beg=System.currentTimeMillis();//开始时间毫秒数
        TestDate02.Pt();
        long end=System.currentTimeMillis();//结束时间毫秒数
        System.out.println("Pt()方法所用时间为:"+(end-beg)+"毫秒");
    }

    public static void Pt(){
        for (int i=1;i<=100;i++){
            System.out.println("heihei");
        }
    }
}

四、包含Date类的综合使用案例

题目:(1)String类练习:假设手机上有一个在后台采集用户使用APP习惯的软件,现在需要将采集到的信息整理存储到数据库中。请完成AppInfoAnalyses工作,方便数据库存储字段和信息,一条信息描述如下:
“美团|购物类|安装时间:2015-09-12|使用次数:8521次|目前版本号:v5.4”
要求用String相关类和API,解析出:
1)应用名称 2)应用类型 3)安装时间 4)使用次数 5)目前版本号

(2)日期和时间类练习:根据1)中给出日期格式(2015-09-12),计算到目前为止这个应用在用户手机上已安装天数。

我的案例实现:
程序1:
思路定义一个能分割字符方法取得时间字符串,
利用上述字符串转时间计算该APP 安装到今天的天数
用到的String类知识点
// 1:String类 substring()方法:该方法底层是数组,下标从0开始, ,split()方法,
// 1.1 substring(2) 这表示从下标为2的开始往后截取(包括下标2该元素)
// 1.2 split(“字符串”)方法,特例如果字符为 “|” 得转义为"\|"才能分割,返回值为 String []
// 1.3 indexOf()

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

public class StringExtract {
    String [] arr=new String[5];
    String appName,appType,appInputTime,appUseCount,appEdition;
    public void Split(String s){
        arr=s.split("\\|");
        appName=arr[0];
        appType=arr[1];
        appInputTime=arr[2];
        appUseCount=arr[3];
        appEdition=arr[4];
    }

    // 定义计算该APP 今天的天数
    public void intervalDays() throws ParseException {  //parse () 抛出异常
        int i=this.appInputTime.indexOf(":"); // 获取":"下标位置"
        System.out.println(i); // 4
        String time=this.appInputTime.substring(i+1);// 截取":" 以后的时间
        System.out.println(time);// 2015-09-12
        Date date=null;
        SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd"); // 格式必须相同
        date=sdf.parse(time); //将时间字符串转为Date类型
        long time1=date.getTime(); // 获取得到的时间到1970日期的毫秒数
        System.out.println("安装时候毫秒数"+time1);
        long time2= System.currentTimeMillis(); // 获取1970到系统当前时间毫秒数
        System.out.println("当前时间毫秒数"+time2);
        long Days= (time2-time1)/(24*3600*1000);// 两个时间相减,除以一天的毫秒时间即可得间隔天数
        System.out.println(this.appName+"下载间隔了"+Days+"天");
    }



}

程序2:(测试上述类的功能)

import java.text.ParseException;

public class TestExtract {
    public static void main(String[] args) {
        String s="美团|购物类|安装时间:2015-09-12|使用次数:8521次|目前版本号:v5.4";
        StringExtract stringExtract=new StringExtract();
        stringExtract.Split(s);
        System.out.println(stringExtract.appInputTime);
        try {
            stringExtract.intervalDays();
        } catch (ParseException e) {
            e.printStackTrace();
        }
        System.out.println("APP名字"+stringExtract.appName);
    }
}

结果如下:
在这里插入图片描述

自我总结

没啥好说的想,多敲多练多想,多问多查,只要练习和总结足够多,熟练度肯定会上升,知识广度也会逐渐提高,希望大家一键三连支持一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值