Java入门第100课——Calendar的getInstance方法

不知不觉到第100课了,码字真的累,写完后还要反复检查是否有笔误,以免对大家造成困扰。后面还有好多课时,真的是从零基础开始,一直到框架。不知能不能坚持写完,关注的人越多更的越快。最近更的比较快是因为有存货,存货还能撑50课的样子。一天不吃不喝最多也就写10个课时。有点啰嗦了,有什么想法给我留言吧。问题Calendar类是一个抽象类,它为特定瞬间与一组诸如YE…

大家好,又见面了,我是你们的朋友全栈君。

不知不觉到第100课了,码字真的累,写完后还要反复检查是否有笔误,以免对大家造成困扰。

后面还有好多课时,真的是从零基础开始,一直到框架。

不知能不能坚持写完,关注的人越多更的越快。

最近更的比较快是因为有存货,存货还能撑50课的样子。

一天不吃不喝最多也就写10个课时。

有点啰嗦了,有什么想法给我留言吧。

问题

    Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法。

    本案例要求获取Calendar类的实例,获取实例后做如下操作:

    1)获取Calendar实例所属的实际类型,并输出。

    2)将Calendar对象转换为Date对象,并输出该Date对象。

    3)使用GregorianCalendar构建对象,该对象对应的日期为2013年12月25日,将GregorianCalendar对象转换为Date对象,并输出该Date对象。

方案

    1)首先,使用Calendar类的getInstance方法获取Calendar类的对象,然后使用下列代码获取该对象所属的实际类型,并输出,代码如下所示:

System.out.println(c.getTime());

    2)使用Calendar类的getTime方法,可以将Calendar对象转换为Date对象,然后,输出该Date类的对象。

    3)使用GregorianCalendar构建日期为2013年12月25日的对象,然后,GregorianCalendar类的getTime方法将GregorianCalendar对象转换为Date对象,并输出该Date对象。

步骤

    实现此案例需要按照如下步骤进行。

步骤一:创建测试方法

    首先新建类TestCalendar;然后,在该类下新建测试方法testGetInstance,代码如下所示:

    package day03;
    
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    import org.junit.Test;
    
    public class TestCalendar{
     /**
      *测试getInstance方法
      */
      @Test
      public void testGetInstance(){
      
      }
    }

步骤二:创建Calendar类的实例

    首先,使用Calendar类的getInstance方法获取Calendar类的对象,然后使用下列代码获取该对象所属的实际类型,并输出,代码如下所示:

    package day03;
    
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    import org.junit.Test;
    
    public class TestCalendar{
     /**
      *测试getInstance方法
      */
      @Test
      public void testGetInstance(){
          Calendar c=Calendar.getInstance();
          //输出Calendar对象所属的实际类型
          System.out.println(c.getClass().getName());
      }
    }

步骤三:运行

    运行testGetInstance方法,控制台输出结果如下所示:

    java.util.GregorianCalendar

    从控制台的输出结果可以看出,对象c所属的实际类型为GregorianCalendar,这是因为,历史上有着许多种纪年方法,它们的差异实在太大了,比如说一个人的生日是”七月七日”,那么一种可能是阳(公)历的七月七日,它也可以是阴(农)历的七月七日。为了统一计时,全世界通常选择最普及、最通用的日历:Gregorian Calendar(格里高历),也就是我们所说的公历。

    Calendar类本身是一个抽象类,它是所有日历类的模板,并提供了一些所有日历通用的方法;但它本身不能直接实例化对象,程序只能创建Calendar子类的实例,Java本身提供一个GregorianCalendar类,一个代表格里高历的子类,它代表了我们通常所说的公历。Calendar类提供了几个静态getInstance方法来获取Calendar对象,这些方法根据TimeZone、Locale来创建Calendar对象。

    本案例中使用的getInstance方法刚好使用了默认的TimeZone、Locale来创建Calendar对象,通过输出结果可以看出默认的TimeZone、Locale创建的Calendar对象所属的实际类型为GregorianCalendar。

步骤四:将Calendar对象转换为Date对象

    package day03;
    
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    import org.junit.Test;
    
    public class TestCalendar{
     /**
      *测试getInstance方法
      */
      @Test
      public void testGetInstance(){
          Calendar c=Calendar.getInstance();
          //输出Calendar对象所属的实际类型
          System.out.println(c.getClass().getName());
          
          //getTime方法返回对应的Date对象
          System.out.println(c.getTime());
      }
    }

步骤五:使用GregorianCalendar构建日期对象

    使用GregorianCalendar构建日期为2013年12月25日的对象,然后,GregorianCalendar类的getTime方法将GregorianCalendar对象转换为Date对象,并输出该Date对象,代码如下所示:

    package day03;
    
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    import org.junit.Test;
    
    public class TestCalendar{
     /**
      *测试getInstance方法
      */
      @Test
      public void testGetInstance(){
          Calendar c=Calendar.getInstance();
          //输出Calendar对象所属的实际类型
          System.out.println(c.getClass().getName());
          
          //getTime方法返回对应的Date对象
          System.out.println(c.getTime());
          
          //创建GregorianCalendar对象
          GregorianCalendar c1=new GregorianCalendar(2013,Calendar.DECEMBER,25);    
          System.out.println(c1.getTime());
      }
    }

步骤六:运行

    运行testGetInstance方法,控制台输出结果如下所示:

    java.util.GregorianCalendar
    Mon Jan 20 10:40:39 CST 2014
    Wed Dec 25 00:00:00 CST 2013

    观察上述代码可以看出已经将Calendar对象和GregorianCalendar对象转换为Date对象。

    总结前几个案例可以知道时间的表示方式可以是Date、long或者Calendar,它们之间的相互转换如图-1所示。

image.png

关注公众号,获取学习视频

Java入门第100课——Calendar的getInstance方法

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/129566.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • navicat premium15.0.9 激活码-激活码分享

    (navicat premium15.0.9 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月27日
  • dom 自定义事件_pix4D生成dom

    dom 自定义事件_pix4D生成dom之前做项目都是直接用jquery的bind绑定事件,不过当时都不是动态生成dom元素,而是已经页面中原本存在的dom元素进行事件绑定,最近在测试给动态生成的dom绑定事件的时候发现事件失效,于是就测试了一下:1.事件失效的原因:(1)bind事件绑定只对dom中存在的元素有效,对于我们后来动态增加的元素是监测不到,所以绑定不了(2)同样,当你使用varaa=docu

    2022年9月11日
  • docker(1)下载安装for mac

    docker(1)下载安装for mac前言Docker提供轻量的虚拟化,你能够从Docker获得一个额外抽象层,你能够在单台机器上运行多个Docker微容器,而每个微容器里都有一个微服务或独立应用,例如你可以将Tomcat运行在一个D

    2022年7月29日
  • JavaScript 匿名函数几种执行方式[通俗易懂]

    JavaScript 匿名函数几种执行方式[通俗易懂]参考1、javascript自执行匿名函数  http://blog.csdn.net/jbgtwang/article/details/6608265其中说到了self-executinganonymousfunctions,有几种方式,最常见也比较容易理解的是:(function(){//dosomethinghere;})();格式:     (fun

    2022年10月3日
  • Vue和vue全家桶有什么区别_Vue和vue全家桶有什么区别

    Vue和vue全家桶有什么区别_Vue和vue全家桶有什么区别vue全家桶都有什么全家桶,顾名思义,对于开发一个完整的中大型单页面应用项目所必须的所必须的插件和框架。注:此文章主要讲解vue-cli脚手架开发方式,不介绍各插件的具体使用方式,具体使用方式详见其他详细介绍文章。一、vue-clivue-cli也叫脚手架,官方定义为Vue.js开发的标准工具!相比scirpt标签引入,脚手架具有如下特点:1)、功能丰富对Babel、TypeScr…

    2022年10月26日
  • 矩阵的投影矩阵_正交投影矩阵的性质

    矩阵的投影矩阵_正交投影矩阵的性质线性代数基础知识(上)线性代数基础知识(下)广义逆矩阵投影矩阵投影的定义投影矩阵求法性质投影矩阵的应用从投影角度看广义逆从投影角度看最小二乘。。。投影的定义什么是投影?下图给出了投影的直观理解:如图是在R3R^3R3空间中,一条直线lll与一个平面α\alphaα相交,向量zzz是R3R^3R3中的一个向量。把lll看成是一束光(方向从上到下),光…

    2022年10月5日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号