JavaSE03_Day02(上)-Date(定义、时间分类、弊端、案例)、SimpleDateFormat(定义、解析格式化字符和含义的说明、将Date格式化String、将String转化为Date)

一、Date(了解)

1.1 定义

  Date类是Java中用于表示时间的一个类,当前通过这个类创建出的对象就表示一个时间,内部维护了一个long值,该值保存的是自1970年元旦到当前Date所表示的时间之间经历的毫秒值。

1.2 时间分类

  • UTC(世界调整时间)

  • GMT(格林威治时间),也可以称之为科学标准时间,是位于英国伦敦的皇家格林尼治天文台的标注时间,因为本初子午线被定义在通过那里的经线位置。

UTC和GMT时间是一个时间

北京时间 = UTC+8

北京时间 = GMT+8

1.3 弊端

  Date类设计之初并没有考虑的特别全面,导致于现在在使用的过程中会出现很多功能缺陷问题,后期可以通过使用后面所学习的日历类和Java8所提供的新日期类进行替代。

1.4 案例

 package cn.tedu.date;
 
 import java.util.Date;
 
 /**
  * Date日期类
  * @author cjn
  */
 public class DateDemo {
 
     public static void main(String[] args) {
         /*
          * 获取当前时间的偏移量
          * 从1970-1-1 8:00:00.000作为起点
          */
         long time = System.currentTimeMillis();
         System.out.println(time);
         
         /*
          * 通过Date对象的创建获取当前时间
          * Date类源码中重写了Object类中的toString方法
          */
         Date date = new Date();
         System.out.println("当前时间:" + date);
         
         /*
          * 通过Date对象进行获取时间偏移量
          * getTime(),内部仍然维护的是long值
          * 下面按照年的单位进行换算打印
          */
         System.out.println(date.getTime()/1000/60/60/24/366 + 1970);
         
         /*
          * 通过上面的对当前时间偏移量的取值,
          * 也可以对时间偏移量进行赋值
          * setTime(0)回归到最开始的时间
          */
 //     date.setTime(0);
 //     System.out.println(date);
         
         /*
          * 千年虫 缺陷(bug)
          * 49 - 10 - 1
          * 79 - 10 - 1
          * 99 - 10 - 1
          * 00 - 10 - 1
          * 01 - 10 - 1
          * 年份在设计的时候没有前两位
          */
         
         /*
          * 获取年份getYear()
          * 该方法是一个过期方法,但是不影响使用
          * 获取年份如果希望表示当前时间年份需要 + 1900
          */
         int year = date.getYear();
         System.out.println(year + 1900);
         
         /*
          * 获取月
          * 该方法是一个过期方法,但是不影响使用
          * 获取月份的时候比真实月份少1
          */
         int month = date.getMonth();
         System.out.println(month + 1);
         
         /*
          * 获取日
          * 该方法是一个过期方法,但是不影响使用
          */
         int day = date.getDate();
         System.out.println("日:" + day);
         
         /*
          * 获取星期
          * 该方法是一个过期方法,但是不影响使用
          */
         int week = date.getDay();
         System.out.println("星期:" + week);
         
         /*
          * 获取小时
          * 该方法是一个过期方法,但是不影响使用
          */
         int hour = date.getHours();
         System.out.println("小时:" + hour);
         
         /*
          * 获取分钟
          * 该方法是一个过期方法,但是不影响使用
          */
         int minute = date.getMinutes();
         System.out.println("分钟:" + minute);
         
         /*
          * 获取秒
          * 该方法是一个过期方法,但是不影响使用
          */
         int second = date.getSeconds();
         System.out.println("秒:" + second);
         
    }
 
 }

测试结果:

 1627392347530
 当前时间:Tue Jul 27 21:25:47 CST 2021
 2021
 2021
 7
 日:27
 星期:2
 小时:21
 分钟:25
 秒:47
 CST 表示的是时区的含义

  通过上面打印Date对象的信息可以发现,虽然Date类中已经重写了toString()方法,但是进行打印输出的内容并不是特别适合中国人进行阅读获取里面的时间信息,当前可以使用下面的SimpleDateFormat类对于Date进行时间格式的转换。

 

二、SimpleDateFormat

2.1 定义

  SimpleDateFormat是一个可以进行对日期时间格式化和解析操作的一个类。日期--->文本称之为格式化。文本--->日期称之为解析。

2.2 解析和格式化字符和含义的说明

  例如:yyyy年MM月dd日-HH:mm:ss 可以匹配2021年7月27日-21:38:51

2.3 将Date格式化为String

 package cn.tedu.date;
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
 /**
  * 将Date->String案例演示
  * @author cjn
  *
  */
 public class SimpleDateFormat_format {
 
     public static void main(String[] args) {
         Date date = new Date();
         System.out.println(date);
         
         /*
          * 格式的展示:
          * 2021-07-27 21:46:10
          * 2021/07/27 21:46:10
          * 2021年07月27日 21:46:10
          * 等等
          */
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss a E");
 
         /*
          * String format(Date date)
          * 该方法可以将一个日期对象转换为指定格式的字符串内容
          */
         String dateStr = sdf.format(date);
         System.out.println(dateStr);
         
    }
 
 }

测试结果:

 Tue Jul 27 21:52:06 CST 2021
 2021年07月27日 21:52:06 下午 星期二

2.4 将String解析为Date

 package cn.tedu.date;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
 /**
  * 将String->Date案例类
  * @author cjn
  *
  */
 public class SimpleDateFormat_parse {
 
     public static void main(String[] args) {
         try {
             String dateStr = "2008-08-08 20:08:08";
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             Date date = sdf.parse(dateStr);
             System.out.println(date);
        } catch (ParseException e) {
             e.printStackTrace();
        } catch (Exception e) {
             e.printStackTrace();
        }
 
    }
 
 }

测试结果:

 Fri Aug 08 20:08:08 CST 2008

 

posted @ 2021-07-27 22:49  Coder_Cui  阅读(281)  评论(0编辑  收藏  举报