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

    参考资料

  • 相关阅读:
    Nginx错误日志配置信息详解
    CentOS 7 开放防火墙端口
    Windows Server 2008 R2常规安全设置及基本安全策略
    Whitewidow:SQL 漏洞自动扫描工具
    Windows Server 2008 架设 Web 服务器教程(图文详解)
    如何修改windows系统远程桌面默认端口
    Nginx的访问日志配置信息详解
    重构手法之在对象之间搬移特性【2】
    重构手法之在对象之间搬移特性【1】
    重构手法之重新组织函数【5】
  • 原文地址:https://www.cnblogs.com/20145110tyc/p/5401692.html
Copyright © 2011-2022 走看看