20145319 第七周学习总结
20145319 《Java程序设计》第七周学习总结
教材学习内容总结
一 时间的度量
-
格林威治标准时间:简称GMT时间,其正午的时间是太阳到达天空最高点时(由于地球公转轨道为椭圆且速度不一,因而依此判断时间会造成越来越大的时间误差)
-
世界时:又称UT时间,借由观测远方星体跨过子午线而得
-
国际原子时:又称TAI时间,将秒的国际单位定义为铯原子辐射震动9192631770周耗费的时间
-
世界协调时间:又称UTC时间由于TAI时间每秒是固定的,然而地球自转会越来越慢,为了保持TAI和UT时间不要差距过大,提出了折中的世界协调时间
-
Unix时间:以1970年1月1日00:00:00为起点
-
epoch:不少Unix的系统、平台、软件都选择这个时间作为时间表的起点
二 年历简介
-
儒略历:如今公历的前身,用来取代罗马历,四年一闰年
-
格里高利历:改革了儒略历
-
ISO 8601标准:ISO 8601并非年历系统,而是时间日期表示方法的标准,用统一时间日期的数据交换格式,如yyyy-mm-ddTHH:MM:SS.SSS
-
认识时区:一般是经度偏移15度偏移一个小时,然而许多国家领土广阔,有多个时间反而困扰,如中国就只采用单一时区
三 认识Date和Calendar
-
时间轴上瞬间的date:使用Date实例的各getTime可以获得epoch毫秒数,Data实例只用来当做时间轴上的某一瞬间
-
DateFormat:DataFormat可以对字符串格式进行处理,分别有getDateInstance()、getTimeInstance()、getDateTimeInstance()等静态方法 ,SimpleDateFormat还有个parse()方法,可以按构建SimpleDateFormat时指定的格式将指定字符串改为Date实例
-
Calendar:格式化时间日期需要DateFormat,如果想取得某个时间日期信息,对时间日期进行操作,需要使用Calendar实例
-
Timezone:一般都会使用默认时区,若要修改,可以使用java.util.Timezone中的getDefault()来取得默认时区信息
四 新时间日期API
-
机器时间观点:Date实例应该只代表了机器观点的时间信息,真正可靠的只有内含的epoch毫秒数
-
人类时间观点:
- localDateTime、LocalTime和LocalTime只有对时间的描述,并没有时区信息,如果定义了不存在的日期,就会跑出DateTimeException
- ZoneDateTime和OffsetDateTime:如果时间日期需要带有时区,可以基于localDateTime、LocalTime和LocalTime等来不齐缺少的信息
- Year YearMonth Month和MonthDay:如果要取得想要的月份数则需要使用getValue()方法
-
对时间的运算:使用Calendar可以进行时间运算,jdk8中也提供了更加方便的时间运算方法以及输出格式,操作相应的temporal类即可
-
年历设计系统:java.time中的类在需要实行年历系统时都是采用单一的ISO8601系统,如果需要其他年历系统则需要java.time.chrono操作java.time.chrono.Chronology接口的类
教材学习中的问题和解决过程
- 虽说设计的时候费了很多心思,但是终归机器时间和人类时间还是有不同的,包括时区,历法,一年的时间也不总是3652460601000,感觉挺复杂的
代码调试中的问题和解决过程
操作题一 代码:
package chapter13;
import java.util.Scanner;
import java.util.Calendar;
public class rili{
public static void main(String args[])
{
int year,month,day;
Scanner yasuo=new Scanner(System.in);
System.out.print("输入年份:");
year=yasuo.nextInt();
System.out.print("输入月份:");
month=yasuo.nextInt();
System.out.print("输入日子:");
day=yasuo.nextInt();
Calendar rili=Calendar.getInstance();
System.out.println("\t");
System.out.println("日\t一\t二\t三\t四\t五\t六");
rili.set(year,month,day);//设置日期将日历翻到指定日期
int xingqi=rili.get(Calendar.DAY_OF_WEEK)-1;//记录星期,如果是1就是周日,7代表周六,依次类推
String a[]=new String[xingqi+31];//存放号码的数组字符串
for(int i=0;i<xingqi;i++)
{
a[i]="**";
}
for(int i=xingqi,n=1;i<xingqi+31;i++)
{
if(n<=9)
{
a[i]=String.valueOf(n);
}
else
{
a[i]=String.valueOf(n);
}
n++;
}
for(int i=0;i<a.length;i++)//输出数组部分
{
if(i%7==0)
{
System.out.println("");//换行
System.out.printf("%s",a[i]);
}
else
System.out.printf("%s","\t"+a[i]);
}
}
}
运行结果:
代码托管
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 150/150 | 1/1 | 20/20 | |
第二周 | 200/350 | 1/2 | 20/40 | |
第三周 | 300/650 | 1/3 | 20/60 | |
第四周 | 350/1100 | 1/4 | 25/85 | |
第五周 | 200/1300 | 1/5 | 20/105 | |
第六周 | 200/1500 | 2/7 | 25/130 | |
第七周 | 200/1700 | 2/9 | 15/145 | |
第八周 |
参考资料
posted on 2016-04-17 22:21 20145319钟轲 阅读(173) 评论(1) 编辑 收藏 举报