教材学习内容总结

  • 就目前来说,即使标注为GMT(格林威治时间),实际上谈到的时间指的是UTC时间。
  • 秒的单位定义时基于TAI。也就是铯原子辐射的振动次数。
  • UTC考虑了地球自转越来越慢而有闰秒修正,确保UTC与UT相差不会超过0.9秒。最近一次的闰秒修正为2012年6月30日,当时TAI实际上已超前UTC有35秒之长。
  • Unix时间是1970年1月1日00:00:00为起点二经过的描述,不考虑闰秒,不少来自于Unix系统、平台、软件等,也都选择这时间作为时间表示发的起算点。
  • 儒略历:修正了罗马历隔三年设置一闰年的错误,改采四年一闰。
  • 格力高利历:将儒略历1582年10月4号星期四的隔天,订为格里高利历1582年10月15日星期五。
  • ISO 8601标准,采用统一的数据格式例如:yyyy-mm-ddTHHH:MM:SS.SSS等标准格式。
  • 如果想取得系统时间,方法之一就是使用System.currentTimeMillis()方法,返回long类型整数,代表1970年1月1日0时0分0秒0毫秒至今经过的毫秒数。以此方法取得的是机器的时间观点,代表时间轴上的某一瞬间。
    教材P429 DateDemo.java运行结果如下

  • 通过DateFormat的各种静态方法进行格式化:
    教材P430 DateFormatDemo.java运行结果如下

  • 其实,我们也可以直接构建SimpleDateFormat,这样我们就可以使用模式字符串自定义格式。它还有一个prase()方法,可以构建SimpleDateFormat时指定的格式,将指定的字符串剖析为Date实例。
    教材P432 HowOld.java
  1. ........
  2. System.out.println("你今年的岁数为:"+
  3. (life / (365 * 24 * 60 * 60 * 1000L)));

运行结果如下

但是!我应该还是19周岁!2016年的10月15日还没有到。这个只是简单地范例,并不能准确计算用户岁数。

  • 在时间的处理中,若是我们想取得某个时间信息或者对时间信息进行操作,我们可以用Caendar实例。它是一个混合类,操作了儒略历与格里高利历的混合历,在书中,若是我们想比较两个Calendar的日期先后,可以使用after和before的方法。在这里使用Calendar计算用户的岁数才是比较合理的。
    教材P435 CalendarUtil.java
    将代码中的生日设定改成自己的,
    运行结果如下

这才是正确的年龄哈。

  • 在前面使用Calendar时并没有使用时区信息,在这里,我们可以使用java.util.TimeZonegetDefault()来取得默认时区信息。
    教材P436 TimeZoneDemo.java运行结果如下

  • Calendar在调用getInstance()时,可以指定TimeZone,如果已经取得Calendar实例,也可以通过setTimeZone()方法设定TimeZone。
    教材P436 TimeZoneDemo2.java运行结果如下

  • 由于某一时区已经不实施日光节约一段时间了,许多开发者并不知道过去有过日光节约时间,在取得Date实例后,被名称Date误导他们代表日期,所以不应该使用Data实例来得知人类观点的时间信息。
  • 真正可靠的信息只有内含epoch毫秒数。同时也可以使用Instant的静态方法now()取得代表Java epoch毫秒数的Instant实例。
  • 如果我们只想表示2014年,可以使用year,如果想表示2014/5可以使用yearmonth。如果只想表示五月,可以使用month,如果想表示5/4,可以使用monthday,其中months是emnu型。如果你想去的代表月份的数字,不要使用oridinal()方法从0开始,想要取得代表月份的数要通过getvalue()方法。
    教材P440 MonthDemo.java运行结果如下

  • 在JDK8中,新日期时间处理实现了流畅API的概念,这是一种计算时间的新的方法,我们在前面曾经写过HowOld.java,在这里我们可以使用新方法进行改进。
    教材P442 HowOld2.java运行结果如下

教材学习中的问题和解决过程

几个概念的理解还需要更加明确。
LocalDateTime、LocalDate和LocalTime
这些类基于ISO 8601年历系统,是不具失时区的时间与日期定义。LocalDateTime、LocalDate和LocalTime 等类名称开头为Local,表示它们都只是对时间的描述,并没有时区信息。

ZonedDateTime和OffsetDateTime
ZonedDateTime和OffsetDateTime间可以通过toXXX()方法互转,Instant通过atZone()与atOffset()转为ZonedDateTime和OffsetDateTime,ZonedDateTime和OffsetDateTime也都可以通过toInstant()取得Instant,ZonedDateTime和OffsetDateTime都有toLocalDate()、toLocalTime()、toLocalDateTime()方法可以取得LocalDate、LocalTime和LocalDateTime。

Year、YearMonth、Month和MonthDay
Month是enum类型,想要取得代表月份的数字,不要使用oridinal()方法,需要使用getValue()方法。

代码调试中的问题和解决过程

在自己生日输入的时候一定要遵循标准的格式,10以内的数字输入时一定要加0,例如"09"

本周代码托管截图

其他(感悟、思考等,可选)

这一周主要看了第十三章,关于时间与日期以及时间日期处理API。瞧的代码比以前有所减少,更多了理解。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 4000行 16篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 1/3 25/45
第三周 500/1000 1/4 40/85
第四周 800/1800 1/5 45/130
第五周 700/2500 1/6 43/173
第六周 700/3200 1/7 48/221
第七周 400/3600 1/8 39/260

参考资料

20145232 韩文浩 《Java程序设计》第7周学习总结的更多相关文章

  1. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

  2. 20155213 2016-2017-2 《Java程序设计》第二周学习总结

    20155213 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 关于Unicode和UTF 很抱歉,没能读完娄老师推荐的网址,关于Unicode和UTF的介 ...

  3. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  8. 20145236 《Java程序设计》第九周学习总结

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

  9. 学号 20175212 《Java程序设计》第九周学习总结

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

  10. 20165223《JAVA程序设计》第二周学习总结

    20165223 <JAVA程序设计>第二周学习总结 教材学习内容总结 第二章要点 标识符与关键字 基本数据类型 类型转换运算 输入输出数据 数组 第三章要点 运算符与表达式 语句概述 i ...

随机推荐

  1. 解决input 有readonly属性 各个浏览器的光标兼容性问题

    <input type='text' readonly unselectable='on' onfocus='this.blur()'/> 目标:input 只能读,但是在ie.火狐浏览器 ...

  2. springBoot整合Quarzt2.3

    首先,你要配置好springboot的配置(在resources下) 我把其改为application.yml # Tomcat server: tomcat: uri-encoding: UTF-8 ...

  3. 向kafka批量发送已存在的txt文件

    需要利用kafka发送txt或log文件,有两种方式:1.自己写程序:2.利用kafka自带脚本. 自己写程序: import org.apache.kafka.clients.producer.Ka ...

  4. 探索未知种族之osg类生物---器官初始化四

    上一节我们对完成了对osg生物内部非常重要器官graphicsContext的初始化工作.这样就可保证我们场景中至少有一个graphicContext存在,不至于刚出生就面临夭折.我们根据上一节中os ...

  5. JoyOI1035 棋盘覆盖

    原题链接 对棋盘染色,坐标和为奇数的染黑,偶数为白.这时会发现对于相同颜色的格子,是无法放置骨牌的,这样我们就将所有格子分成两类,然后根据能否放置骨牌连边,最后就是求二分图最大匹配了. 这里我是用的匈 ...

  6. django添加装饰器

    引入模块: from django.utils.decorators import method_decorator 添加:@method_decorator(func) from django.ut ...

  7. MySQL连接、登录、密码等

    官方教程:https://dev.mysql.com/doc/refman/8.0/en/ 链接数据库,通过指定 -h 参数可以连接网络上的数据库 mysql -u 用户名 -h 服务器IP -P 端 ...

  8. PHP 批量移动文件改名

    public function changeCoverName(){ //$type = '考研'; //$coverPath = './Public/course_cover/kaoyan/'; $ ...

  9. 新手必看,史上最全的iOS开发教程集锦,没有之一!

    最近大火的iPhone XS Max和iPhone XS,不知道有没有同学已经下手了呢?一万三的价位确实让很多人望而却步啊.据说为了赢得中国的用户,专门出了双卡双待的,可想而知中国市场这块“肥肉”人人 ...

  10. java 泛型: 通配符? 和 指定类型 T

    1. T通常用于类后面和 方法修饰符(返回值前面)后面 ,所以在使用之前必须确定类型,即新建实例时要制定具体类型, 而?通配符通常用于变量 ,在使用时给定即可 ? extends A  :  通配符上 ...