zoukankan      html  css  js  c++  java
  • 20145309《Java程序设计》第七周学习总结

    教材学习内容总结

    第13章 时间与日期

    13.1 认识时间与日期

    13.1.1 时间的度量
    • 格林威治时间(GMT)
    • 世界时(UT)
    • 国际原子时(TAI)
    • 世界协调时间(UTC)
    • Unix时间:Unix系统的时间表示法
    • epoch:来自于Unix的系统、平台、软件等选用这个时间作为时间表示法的起算点

      13.1.2 年历简介
    • 儒略历
    • 格里高利历
    • ISO 8601标准

      13.1.3 认识时区
    • 日光节约时间

      13.2 认识DataCalender

      13.2.1 时间轴上瞬间的Data
    • 使用System.currentTimeMillis()方法,取得系统时间,返回 long 类型整数
    • 使用Date实例取得系统时间描述,Date有两个构造函数,一个可使用epoch毫秒数构建,另一个为无自变量构造函数(内部亦是使用System.currentTimeMiilis()取得eqoch毫秒数),调用getTime()可取得内部保存的epoch毫秒数值
    • setTime()(用来设置epoch毫秒数)
    • 字符串时间格式的处理

      13.2.2 格式化时间日期的DataFormat
    • java.text.DateFormat复责字符串时间格式处理,DataFormat是个抽象类,其操作类为java.text.SimpleDataFormat,可以直接构建SimpleDataFormat实例,或是使用DataFormatgetDataInstance()getTimeInstance()getDataTimeInstance()等静态用法
    • getDateInstance()getTimeInstance()getDataTimeInstance()等静态方法主要是取得不同详细程度的日期时间,取得DataFormat实例时,也可以指定Locale实例,将日期时间格式化为指定的语系方式
    • 直接构建SimpleDateFormat的好处是可使用模式字符串自定义格式
    • SimpleDateFormatparse()方法,按照SimpleDateFormat时指定的格式,将指定的字符串剖析为Date实例

      13.2.3 处理时间日期的Calendar
    • Calendar实例取得某个时间日期信息,或者对时间日期进行操作
    • Calendar是个抽象类,java.util.GregorianCalendar是其子类,通过CalendargetInstance()取得的Calendar实例,默认就是取得GregorianCalendar实例
    • 取得Calendar实例后,可以使用getTime()取得Date实例,使用get()方法并指定Calendar上的字段枚举常数
    • 设定时间日期,不要对Date设定,应该使用Calendar,月份的部分使用枚举常数定义
    • 取得Calendar实例后,使用add()方法,改变Calendar的值,只针对日期中的某个字段加减,使用roll()方法
    • 日历时间可以使用GregorianCalendarsetGregorianCalendar()方法来修改,设为Date(Long.MAX_VALUE)为纯粹的儒略历,Date(Long.MIN_VALUE)是纯粹的格里高利历
    • 比较两个Calendar的时间日期先后,使用after()before()方法

      13.2.4 设定TimeZone
    • java.util.TimeZonegetDefault()来取得默认时区信息
    • 取得指定时区的TimeZone实例,可以使用ID字符串
    • TimeZone.getAvaliableIDs()取得可用的ID,返回String[]
    • Calender在调用getInstance()时可以指定Timezone,如果已经取得Calender实例,可以通过setTimeZone()的方法设定时区

      13.3 JDK8新时间日期API

      13.3.1 机器时间观点的API
    • Date是机器的时间观念
    • 日期处理API主要套件命名java.time,机器相关的时间概念Instant
    • 使用Instant的静态方法now()取得Instant实例,ofEpochMilli()可以指定Java epoch毫秒数,ofEpochSecod()指定秒数
    • 取得Instant实例后,可以使用plusSecond()``plusMillis()``plusNanos()``minusSeconds()``minusMillis()``MinusNanos()做时间轴上的运算,返回新的Instant实例,代表运算后的时间

      13.3.2 人类时间观点的API
    • 1.LocalDateTimeLocalDateLocalTime
    • 对于片段的时间日期时间的描述,不具时区的时间与日期定义
    • 2.ZonedDateTimeOffsetDateTime
    • 基于LocalDateTimeLocalDateLocalTime来补齐缺少的时区信息
    • Instant通过atZone()``atOffset()转化成ZonedDateTime和OffsetDateTime,ZonedDateTime和OffsetDateTime可通过toInstant()取得Instant,ZonedDateTime和OffsetDateTime都有toLocalDate()``toLocalTime()``toLocalDateTime()取得localDate、localTime、localDateTime
    • 3.Year``YearMonth``Month``Mothday
    • Month是enum类型,取得代表月份的数字,不要使用oridinal()方法(enum在定义时的顺序,从0开始),使用getValue()方法

      13.3.3 对时间的运算
    • 1.TemporaAmount
    • 操作类Period``Duration
    • 时间计量,新时间和日期用API用类Duration来定义,对于年、月、日、星期的日期差,可使用Period类定义(静态方法ofDays()``ofMonths()``ofWeeks(),返回Period实例)
    • plus()方法接受java.time.temporal.TemporalAmount实例
    • 2.TemporalUnit
    • plus()方法的另一重载版本,接受java.time.temporal.TemporalUnit实例,java.time.temporal.ChronoUnit是其实做类,使用enum实做
    • 3.Temporal
    • plus()定义在Temporal接口上
    • 4.TemporalAccessor

    学习进度条

     代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
    目标 5000行 30篇 400小时  
    第一周 200/200 2/2 20/20  
    第二周 300/500 2/4 18/38  
    第三周 500/1000 1/5 22/60  
    第四周 500/1500 1/6 30/90  
    第五周 500/2000 1/7 20/110  
    第六周 500/2500 2/9 20/130  
    第七周 500/3000 2/11 20/150
  • 相关阅读:
    luogu P1641 [SCOI2010]生成字符串
    luogu P2662 牛场围栏
    luogu P3193 [HNOI2008]GT考试
    luogu P3293 [SCOI2016]美味
    luogu P2048 [NOI2010]超级钢琴
    Wannafly挑战赛21 E 未来城市规划
    luogu P2770 航空路线问题
    luogu P4082 [USACO17DEC]Push a Box
    运维交流平台
    elk之[logstash-input-file]插件使用详解
  • 原文地址:https://www.cnblogs.com/zym0728/p/5401535.html
Copyright © 2011-2022 走看看