栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java入门之时间相关类的使用——System类、Date类、Calendar类、SimpleDateFormat类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java入门之时间相关类的使用——System类、Date类、Calendar类、SimpleDateFormat类

一、引语

二、System类的currentTimeMillis()方法

三、Date类的getTime()和setTime()方法

四、Calendar类的getInstance()方法、get()方法、add()方法、set()方法

五、SimpleDateFormat类的parse()和format()方法

六、结语


一、引语

在Java学习过程中,碰到了有关于时间的类的方法的使用,不同的方法有时可以获得相同的结果,为了理清楚这些类的方法的使用,在本篇文章里会将目录里的内容尽我所能讲清楚。

CST:可视为美国、澳大利亚、古巴或中国的标准时间。

GMT:一般指世界时。

二、System类的currentTimeMillis()方法

①、使用jdk-9_汉化版.CHM这个工具,我们可以搜寻一些类的使用方法和其他信息,在搜索框中输入System之后进行检索,可以翻看到它的currentTimeMillis方法:

 我们得知,要用Long基本数据类型的变量来接收这个方法的返回值,但是需要注意:这个毫秒值是从GMT1970年1月1日0时0分0秒开始计数的。因为每次这个方法一使用,则代表返回时间段的毫秒值,所以,我们可以利用这个特点,来计算某一段程序执行所花的时间长短。

示例:

        Long time=System.currentTimeMillis();  //执行前时间标记

        for(int i=0;i<=1000;i++){  //检测的程序代码段
            System.out.print(i);
        }

        Long time2=System.currentTimeMillis();  //执行后时间标记

        System.out.println();
        System.out.println("这段for循环执行的时长为:"+(time2-time)+"ms");
//特别说明,因为输出内容过多,所以在此处省略不展示给大家看了

这段for循环执行的时长为:10ms
三、Date类的getTime()和setTime()方法

①、Date类的特别之处就在于,只要新建一个实例对象,进行输出,即可得到当前的时间。

Date d=new Date();
System.out.println("当前时间为:"+d);
当前时间为:Fri Nov 26 09:48:41 CST 2021

②、getTime()的功能作用与currentTimeMillis()有些相似,都是获得从GMT1970年1月1日0时0分0秒开始到现在的毫秒值。

 既然获得了从当时到现在的毫秒值,那我们就可以算出,从1970年到现在的年份间隔。

示例:

System.out.println("如今与当年已经相隔"+d.getTime()*1.0/1000/60/60/24/365+"年了");

//输出:
如今与当年已经相隔51.93719308913623年了

③、setTime(Long time)这个方法,必定要有time记录从1970年到某个时间点的毫秒值,setTime的作用,更多的是与currentTimeMillis()或者getTime()联合使用,将所获得的时间间隔转化为1970年后的某个时间点,通过setTime()进行转化,输出之后是Date类型。

示例:

Long time3=System.currentTimeMillis();//或者Long time3=d.getTime();
Date d1=new Date();
d1.setTime(time3);
System.out.println("采用第三种方法获得当前时间为:"+d1);

//输出
采用第三种方法获得当前时间为:Fri Nov 26 09:48:41 CST 2021
四、Calendar类的getInstance()方法、get()方法、add()方法、set()方法

①、Calendar实例对象是从Calendar.getInstance()中获得的,代表的是当前默认时区和区域设置的日历。

②、get()方法可获得的不只是以下三个内容,想要查询当前时间的其他内容,大家可以jdk-9文件里查找Calendar,即可获得数十个其他的输出和描述。

Calendar c=Calendar.getInstance();
System.out.println("当前时间为:"+c.get(Calendar.YEAR)+"年"+c.get(Calendar.MONTH)+"月"+c.get(Calendar.DATE)+"日");

//输出:
当前时间为:2021年10月26日

 ③、add()方法,可以用来更改实例对象默认当前时间的内容

c.add(Calendar.YEAR,-3);
c.add(Calendar.MONTH,-2);
c.add(Calendar.DATE,-12);
System.out.println("当前时间为:"+c.get(Calendar.YEAR)+"年"+c.get(Calendar.MONTH)+"月"+c.get(Calendar.DATE)+"日");

//输出:
当前时间为:2018年8月14日

④、set()方法也可以更改默认的当前时间的内容,但是一般用法是一起更改YEAR,MONTH,DATE这三项的内容,同时时刻牢记,month是从0-11,如果设置为12,则年份会增加,同时month变为0;

c.set(2050,11,25);
System.out.println("修改之后的时间为:"+c.get(Calendar.YEAR)+"年"+c.get(Calendar.MONTH)+"月"+c.get(Calendar.DATE)+"日");

c.set(2050,12,25);
System.out.println("修改之后的时间为:"+c.get(Calendar.YEAR)+"年"+c.get(Calendar.MONTH)+"月"+c.get(Calendar.DATE)+"日");

//输出:
修改之后的时间为:2050年11月25日
修改之后的时间为:2051年0月25日

要保证输出更加明了的话,可以定义int变量来接收c.get(Calendar.MONTH)的值,更方便+1输出,如果int month=c.get(Calendar.MONTH)+1,按照程序正常输出month,即可使修改之后的时间为:2050年12月25日,代表现在准确的月份。

五、SimpleDateFormat类的parse()和format()方法

按照jdk-9文件的说法:

SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。 它允许格式化(日期文本),解析(文本日期)和规范化。

则说明了parse()将字符串类型转化为Date类型和format()将Date类型转化为字符串类型的特点。

①、使用parse()方法时,一定注意要在实例化SimpleDateFormat类时,根据字符串日期的类型,给出转化的参照模板,同时Date的示例对象内容也是按照当时的时间日历补充其他内容。

示例:

String s="2034年7月24日";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");
Date d2=sdf.parse(s);
System.out.println("字符串类型的数据转化为date型之后的输出结果为:"+d2);

//输出:
字符串类型的数据转化为date型之后的输出结果为:
Mon Jul 24 00:00:00 CST 2034

②、format()的要求则比较少,不需要给出输出的参照模板,就可以直接输出,同时,这个输出会有它原本输出的格式。

Date d3=new Date();
SimpleDateFormat sdf2=new SimpleDateFormat();
String s1=sdf2.format(d3);
System.out.println("Date类型转化为字符串类型的输出为:"+s1);

//输出:
Date类型转化为字符串类型的输出为:2021年11月26日 上午9:48
六、结语

时间类的使用其实不难,我们在使用的时候,可以按照我们对时间的输出格式的要求来进行选择,同时要注意一些方法的功能混合使用。

如果文章内容有误,欢迎大家指正!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/606716.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号