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

    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("	SHORT: %s%n", getDateInstance(LONG).format(date));
            out.printf("	SHORT: %s%n", getDateInstance(SHORT).format(date));
        }
    
        static void timeInstanceDemo(Date date) {
            out.println("getTimeInstance() demo");
            out.printf("	LONG: %s%n", getTimeInstance(LONG).format(date));
            out.printf("	MEDIUM: %s%n", getTimeInstance(MEDIUM).format(date));
            out.printf("	SHORT: %s%n",getTimeInstance(SHORT).format(date));
        }
    
        static void dateTimeInstanceDemo(Date date) {
            out.println("getDateTimeInstance() demo");
            out.printf("	LONG: %s%n",
                    getDateTimeInstance(LONG, LONG).format(date));
            out.printf("	MEDIUM: %s%n",
                    getDateTimeInstance(SHORT, MEDIUM).format(date));
            out.printf("	SHORT: %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

    参考资料

  • 相关阅读:
    61. 最长不含重复字符的子字符串
    60. 礼物的最大价值 (未理解)
    59. 把数字翻译成字符串
    58. 把数组排成最小的数
    57. 数字序列中某一位的数字 (不懂)
    spring data jpa 官方文档
    idea 编译报错 源发行版 1.8 需要目标发行版 1.8
    idea maven 依赖报错 invalid classes root
    solr
    spring boot 官方文档
  • 原文地址:https://www.cnblogs.com/20145110tyc/p/5401692.html
Copyright © 2011-2022 走看看