欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java中日期类Date的使用

程序员文章站 2022-04-15 23:20:21
日期类Date的使用(1)日期类Date的实例化及输出转换:测试代码:import java.text.SimpleDateFormat;import java.util.Date;public class Test01 { public static void main(String[] args) throws Exception{ //实例化一个日期对象 Date nowTime = new Date(); //输出日期,Date对...

日期类Date的使用

(1)日期类Date的实例化及输出转换:

测试代码:

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

public class Test01 {
    public static void main(String[] args) throws Exception{
        //实例化一个日期对象
        Date nowTime = new Date();

        //输出日期,Date对象已经重写了toString()方法
        System.out.println(nowTime);  //Wed Jul 15 08:27:35 CST 2020

        //上面输出的日期虽然信息很全,但样式不太好看,日期可以格式化吗?也就是可以转换吗?
        //SimpleDateFormat是java.text包下的,专门负责日期格式化的。
        //将日期格式化,需按照指定的格式进行转换:Date--指定日期格式字符串--String

        /*
        * yyyy 年(年是4位)
        * MM 月(月是2位)
        * dd 日
        * HH 时
        * mm 分
        * ss 秒
        * SSS 毫秒
        * 注意:在日期格式中,除了y M d H m s S这些字母不能随便写之外,其他字母符号可以随便组织编写
        * */

        //标准的格式:"yyyy-MM-dd HH:mm:ss SSS"
        String str = "yyyy-MM-dd HH:mm:ss SSS";
        SimpleDateFormat sdf = new SimpleDateFormat(str);
        
        //调用sdf的format()方法
        String nowTimeString = sdf.format(nowTime);
        System.out.println(nowTimeString);  //2020-07-15 08:27:35 963


        //上面讲的是Date类型转换成String字符串型表示
        //那一个日期字符串可以转换成Date类型吗?当然可以
        String nowTimeString1 = "2008/08/08 08:08:08";
        
        //SimpleDateFormat sdf1 = new SimpleDateFormat("这里的格式现在不能乱写,需和上面要转换的格式相同");
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");  //建议不要加毫秒,不然会影响数据,你可以尝试一下
        
        //String --> Date需格式匹配,不然会报异常,系统要求抛出异常
        Date nowTime1 = sdf1.parse(nowTimeString1);
        System.out.println(nowTime1);  //Fri Aug 08 08:08:08 CST 2008
    }
}

(2)获取自1970年1月1日 00:00:00 000 到当前系统时间的 总毫秒数。
1秒 = 1000毫秒。

使用System.currentTimeMillis()方法,静态无参数方法,返回long类型数字。

使用此方法,可以测试一个函数的执行时间。

测试代码:

public class Test02 {
    public static void main(String[] args) {
        long nowTimeMillis = System.currentTimeMillis();
        System.out.println(nowTimeMillis);  //1594774591280

        //此方法可以测试一个方法的执行时间
        long startTime = System.currentTimeMillis();
        doSome();
        long endTime = System.currentTimeMillis();
        System.out.println("doSome()方法执行所花时间为:" + (endTime-startTime) + "毫秒");  //377毫秒,每次运行时间可能不一样

    }

    private static void doSome() {
        for (int i = 0; i < 10000; i++) {
            System.out.println(i);
        }
    }
}

(3)关于Date对象的有参数构造方法:

new Date(long ms) 参数ms是自从1970/01/01 00:00:00 000开始计时的毫秒数

测试代码:

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

public class Test03 {
    public static void main(String[] args) {
        Date time = new Date(1);  //这里的1,是1毫秒

        String str = "yyyy/MM/dd HH:mm:ss SSS";
        SimpleDateFormat sdf = new SimpleDateFormat(str);

        String timeString = sdf.format(time);
        System.out.println(timeString);  //1970/01/01 08:00:00 001  其中多了8个小时,是因为时差问题

        // 那这个构造方法有什么用呢?我怎么知道指定多少毫秒呢?看下面问题
        // 获取昨天的此时的时间
        Date yesterdayTime = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24);
        String timeString1 = sdf.format(yesterdayTime);
        System.out.println(timeString1);

        //同样也能获取去年的此时时间
        //这里不再演示,上面减去的数乘365即可

    }
}

总结:

(1)获取系统当前时间:Date nowTime = new Date();
System.out.println(nowTime); //Wed Jul 15 08:27:35 CST 2020

(2)将Date对象格式化成我们想要的格式:
String str = “yyyy-MM-dd HH:mm:ss SSS”;
SimpleDateFormat sdf = new SimpleDateFormat(str);
String nowTimeString = sdf.format(nowTime);
System.out.println(nowTimeString); //2020-07-15 08:27:35 963

(3)获取自1970年1月1日 00:00:00 000 到当前系统时间的 总毫秒数。使用System.currentTimeMillis()方法,静态无参数方法,返回long类型数字。

可以测试一个函数的执行时间。

(4)Date对象的有参数构造方法:new Date(long ms);
参数ms是自从1970/01/01 00:00:00 000开始计时的毫秒数。

可以获取昨天的此时的时间。

本文地址:https://blog.csdn.net/pipizhen_/article/details/107353213