20145110《Java程序设计》第七周学习总结
2016-04-17 18:09
441 查看
20145110 《Java程序设计》第七周学习总结
教材学习内容总结
13 时间与日期
时间的度量
1.格林威治标准时间(GMT):常被不严谨地当成是UTC时间,现已不作为标准时间使用。2.世界时(UT):在1972年引入UTC之前,GMT与UT是相同的
3.国际原子时(TAI):秒的单位定义是基于TAI,也就是铯原子辐射振动次数。
4.世界协调时间(UTC):UTC考虑了地球自转越来越慢而有闰秒修正,确保UTC与UT相差不会超过0.9秒。
5.Unix时间:不考虑闰秒修正,用以表达时间轴上某一瞬间
6.epoch:某个特定时代的开始,用以表达时间轴上某一瞬间
认识Date与Calendar
package DateCalendar; import java.util.*; import static java.lang.System.*; public class DateDemo { public static void main(String[] args) { Date date1 = new Date(currentTimeMillis()); Date date2 = new Date(); out.println(date1.getTime()); out.println(date2.getTime()); } }
程序运行结果显示的数字也就是1970年1月1日至今所经过的毫秒数。
格式化时间日期的DateFormat:
package DateCalendar; import java.util.*; import static java.lang.System.out; import static java.text.DateFormat.*; public class DateFormatDemo { public static void main(String[] args) { Date date = new Date(); dateInstanceDemo(date); timeInstanceDemo(date); dateTimeInstanceDemo(date); } static void dateInstanceDemo(Date date) { out.println("getDateInstance() demo"); out.printf("\tSHORT: %s%n", getDateInstance(LONG).format(date)); out.printf("\tSHORT: %s%n", getDateInstance(SHORT).format(date)); } static void timeInstanceDemo(Date date) { out.println("getTimeInstance() demo"); out.printf("\tLONG: %s%n", getTimeInstance(LONG).format(date)); out.printf("\tMEDIUM: %s%n", getTimeInstance(MEDIUM).format(date)); out.printf("\tSHORT: %s%n",getTimeInstance(SHORT).format(date)); } static void dateTimeInstanceDemo(Date date) { out.println("getDateTimeInstance() demo"); out.printf("\tLONG: %s%n", getDateTimeInstance(LONG, LONG).format(date)); out.printf("\tMEDIUM: %s%n", getDateTimeInstance(SHORT, MEDIUM).format(date)); out.printf("\tSHORT: %s%n", getDateTimeInstance(SHORT, SHORT).format(date)); } }
SimpleDateFormat有一个parse()方法,可以按构建SimpleDateFormat时指定的格式,将指定的字符串剖析为Date实例,
处理时间日期的Calendar
Date现在建议作为时间轴上的瞬间代表,要格式化时间日期则通过DateFormat,如果想要取得某个时间日期信息,或者是对时间日期进行操作,可以使用Calendar实例。取得Calendar实例后,可以使用getTime()取得Data实例,如果想要取得年月日等日期数字时段,可以使用get()方法并指定Calendar上的数字段枚举常数。
out.println(calendar.get(Calendar.YEAR)); out.println(calendar.get(Calendar.MONTH)); out.println(calendar.get(Calendar.DATE));
如果你要设定时间日期等字段,不要对Date设定,应该使用Calendar,同样地,月份的部分请使用枚举常数设定。
Calendar calendar = Calendar.getInstace(); calendar.set(2016,Calendar.APRIL,16); // 2016/04/16 out.println(calendar.get(Calendar.YEAR)); // 2016 out.println(calendar.get(Calendar.MOUNTH)); //Calendar.APRIL取值3 out.println(calendar.get(Calendar.DATE)); //16
JDK新时间日期API
如果我们的时间需要带有时区,可以基于LocalDateTime,LocalDate,LocalTime来弥补缺少的信息:package DateCalendar; import static java.lang.System.out; import java.time.*; public class ZonedDataTimeDemo { public static void main(String[] args) { LocalTime localTime = LocalTime.of(0, 0, 0); LocalDate localDate = LocalDate.of(1975, 4, 1); ZonedDateTime zonedDateTime = ZonedDateTime.of( localDate, localTime, ZoneId.of("Asia/Taipei")); out.println(zonedDateTime); out.println(zonedDateTime.toEpochSecond()); out.println(zonedDateTime.toInstant().toEpochMilli()); } }
year,month,yearmonth与monthday:
如果想要取得代表月份的数字,不要使用oridinal()方法,因为oridinal()是enum在定义时的顺序,从0开始,想要取得代表月份的数要通过getValue()方法(调整了格式,使其对齐)。package DateCalendar; import java.time.*; import java.util.Scanner; import static java.lang.System.out; public class HowOld { public static void main(String[] args) { out.print("输入出生年月日(yyyy-mm-dd):"); LocalDate birth = LocalDate.parse(new Scanner(System.in).nextLine()); LocalDate now = LocalDate.now(); Period period = Period.between(birth, now); out.printf("你活了 %d 年 %d 月 %d 日%n", period.getYears(), period.getMonths(), period.getDays()); } }
教材学习中的问题和解决过程
当输入数据不符合规范时,会遇到编译错误。
本周代码托管截图
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 1/2 | 20/20 | |
第二周 | 300/500 | 1/3 | 18/38 | |
第三周 | 500/1000 | 1/4 | 22/60 | |
第四周 | 300/1300 | 1/5 | 30/90 | |
第五周 | 300/1600 | 1/6 | 30/160 | |
第六周 | 700/2300 | 2/7 | 30/190 | |
第七周 | 400/2700 | 2/9 | 30/220 |
参考资料
Java学习笔记(第8版)《Java学习笔记(第8版)》学习指导
...
相关文章推荐
- mongo入门--java连接mongo数据库
- Netbeans Theme
- JavaWEB开发入门
- java第五次作业
- java第四次作业
- Java的语言基础
- 20145203盖泽双:Java实验报告二
- Struts之ActionSupport
- 20145203盖泽双 《Java程序设计》第7周学习总结
- 20145120 《Java程序设计》第7周学习总结
- Java 输出蛇形矩阵
- SpringMVC从Controller跳转到还有一个Controller
- 如何在struts2中实现下载?
- java调用时候的父子类的顺序
- java第五次作业
- 20145309《Java程序设计》第七周学习总结
- java集合-HashMap(JDK1.8)
- 20145230《java学习笔记》第七周学习总结
- 运行Java程序时 常遇到的错误
- 每行一个单词,对其进行分类输出为Markdown的无序列表的形式