JAVA网络爬虫
HttpClient

导航

 

Date类—相关操作

  1. 毫秒值的概念和作用

    • 执行路口

      package cn.xiaoge.day12.demo02;
      
      /*
          java.util.Date: 表示日期和时间的类
          类 Date 表示特定的瞬间, 精确到毫秒.
      
          毫秒: 千分之一秒 1000毫秒=1秒
      
          特定的瞬间: 一个时间点, 一刹那时间
          2019-10-26 22:38:24:333 瞬间
          2019-10-26 22:38:24:334 瞬间
          2019-10-26 22:38:24:335 瞬间
          ...
      
          毫秒值的作用: 可以对时间和日期进行计算
          2019-10-26 到 2018-10-26 中间一共有
          多少天, 可以把日期转换为毫秒进行计算, 计算
          完毕, 再把毫秒转换为日期
      
          把日期转换为毫秒:
              当前的日期:2018-10-26
              时间原点(0毫秒):1970 年 1 月 1 日 00:00:00(英国格林威治)
              就是计算当前日期到时间原点之间, 一共经历了多少毫秒 (1572101160308L)
          注意:
              中国属于东八区, 会把时间增加8个小时
              1970 年 1 月 1 日 08:00:00
      
          把毫秒转换为日期:
               1 天 = 24 × 60 × 60 = 86400 秒 = 86400 x 1000 = 86400000毫秒
       */
      
      public class Demo01Date {
      
          public static void main(String[] args) {
              System.out.println(System.currentTimeMillis()); // 获取当前系统时间到1970 年 1 月 1 日 00:00:00经历了多少毫秒
          }
      
      }
      
      // 运行结果
      1572159515508
      
  2. Date类的构造方法和成员方法

    • 执行路口

      package cn.xiaoge.day12.demo02;
      
      import java.util.Date;
      
      public class Demo02Date {
      
          public static void main(String[] args) {
              demo01();
              System.out.println("====================================");
              demo02();
              System.out.println("====================================");
              demo03();
              System.out.println("====================================");
          }
      
          /*
              long getTime() 把日期转换为毫秒数(相当于System.currentTimeMillis()方法)
                  返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
          */
          private static void demo03() {
              Date date = new Date();
              long time = date.getTime();
              System.out.println(time); // 1572154129570
          }
      
      
          /*
              Date类的带参数构造方法
              Date(long date): 传递毫秒值, 把毫秒值转换为Date日期
          */
          private static void demo02() {
      
              Date date1 = new Date(0L);
              System.out.println(date1); // Thu Jan 01 08:00:00 CST 1970
      
              Date date2 = new Date(1572101160308L);
              System.out.println(date2); // Sat Oct 26 22:46:00 CST 2019
      
          }
      
      
          /*
              Date类的空参数构造方法
              Date() 获取当前系统的日期和时间
          */
          private static void demo01() {
      
              Date date = new Date();
              System.out.println(date); // Sun Oct 27 13:20:57 CST 2019
      
          }
      
      }
      
      // 运行结果
      Sun Oct 27 14:59:41 CST 2019
      ====================================
      Thu Jan 01 08:00:00 CST 1970
      Sat Oct 26 22:46:00 CST 2019
      ====================================
      1572159581707
      ====================================
      
  3. DateFormat类和SimpleDateFormat及DateForm类的format方法和parse方法

    • 执行路口

      package cn.xiaoge.day12.demo03;
      
      /*
          java.text.DateFormat: 是日期/时间格式化子类的抽象类
      
          作用:
              格式化(也就是日期 -> 文本)、解析(文本-> 日期)
      
          成员方法:
               String	format(Date date) 按照指定的模式, 把Date日期, 格式化为符合模式的字符串
      
               Date parse(String source) 把符合模式的字符串, 解析为Date日期
      
          DateFormat: 是一个抽象类, 无法直接创建对象使用, 可以使用DateFormat类的子类
      
          java.text.SimpleDateFormat extends DateFormat
      
          构造方法:
              SimpleDateFormat(String pattern)
                  用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
              参数:
                  String pattern: 传递指定的模式
              模式: 区分大小写
                  y       年
                  M       月
                  d       日
                  H       时
                  m       分
                  s       秒
              写对应的模式, 会把模式替换为对应的日期和时间
                  "yyyy-MM-dd HH:mm:ss"
              注意:
                  模式中的字母不能更改, 链接模式的符号可以改变
                  "yyyy年MM月dd日 HH时mm分ss秒"
       */
      
      import java.text.ParseException;
      import java.text.SimpleDateFormat;
      import java.util.Date;
      
      public class Demo01DateFormat {
      
          public static void main(String[] args) throws ParseException {
              demo01();
              System.out.println("=========================");
              demo02();
              System.out.println("=========================");
          }
      
          /*
              使用DateFormat类中的方法parse, 把文本解析为日期
              使用步骤:
                  1. 创建SimpleDateFormat对象, 构造方法中传递指定的模式
                  2. 调用SimpleDateFormat对象中的方法parse, 把符合构造方法中模式的字符串, 解析为Date日期
                  注意:
                      public Date parse(String source) throws ParseException
                      parse方法声明了一个异常叫ParseException
                      如果字符串和构造方法的模式不一样, 那么程序就会跑出此异常
                      调用一个抛出异常的方法, 就必须的处理这个异常, 要么throws继续抛出这个异常, 要么try catch自己处理
      
           */
          private static void demo02() throws ParseException {
      
              // 1. 创建SimpleDateFormat对象, 构造方法中传递指定的模式
              SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
              // 2. 调用SimpleDateFormat对象中的方法parse, 把符合构造方法中模式的字符串, 解析为Date日期
              // Date parse(String source) 把符合模式的字符串, 解析为Date日期
              Date date = sdf.parse("2019年10月27日 14时23分49秒");
              System.out.println(date);
      
          }
      
          /*
              使用DateFormat类中的方法format, 把日期格式化为文本
              使用步骤:
                  1. 创建SimpleDateFormat对象, 构造方法中传递指定的模式
                  2. 调用SimpleDateFormat对象中的方法Format, 按照构造方法中指定的模式, 把Date日期格式化为符合模式的字符串(文本)
           */
          private static void demo01() {
      
              // 1. 创建SimpleDateFormat对象, 构造方法中传递指定的模式
              SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
      
              // 2. 调用SimpleDateFormat对象中的方法Format, 按照构造方法中指定的模式, 把Date日期格式化为符合模式的字符串(文本)
              // String format(Date date) 按照指定的模式, 把Date日期, 格式化为符合模式的字符串
              Date date = new Date();
              System.out.println(date); // Sun Oct 27 14:23:49 CST 2019
              String dateFormat = sdf.format(date);
              System.out.println(dateFormat); // 2019年10月27日 14时23分49秒
          }
      
      }
      
      // 运行路口
      Sun Oct 27 15:00:57 CST 2019
      20191027150057=========================
      Sun Oct 27 14:23:49 CST 2019
      =========================
      
  4. 计算一个人出生了多少天

    • 执行路口

      package cn.xiaoge.day12.demo04;
      
      /*
          1、要获取出生日期Scanner
      
          2、要将出生日期(字符串)转换成为Date格式的样子
      
          3、讲Date格式的出生日期转换为毫秒值
      
          4、获取当前日期
      
          5、将当前日期转换为毫秒值
      
          6、将毫秒值转换为天
       */
      
      import java.text.ParseException;
      import java.text.SimpleDateFormat;
      import java.util.Date;
      import java.util.Scanner;
      
      public class Demo01BornDate {
      
          public static void main(String[] args) throws ParseException {
              // 1、使用Scanner类中的方法next,获取出生日期
              Scanner sc = new Scanner(System.in);
              System.out.println("请输出您的出生日期,格式:yyyy-MM-dd");
              String birthdayDateString = sc.next();
      
              // 2、使用DateFormat类中的方法parse,把字符串的出生日期,解析为Date格式的出生日期
              SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
              Date birthdayDate = sdf.parse(birthdayDateString);
      
              // 3、把Date格式的出生日期转换为毫秒值
              long birthdayDateTime = birthdayDate.getTime();
      
              // 4、获取当前的日期,转换为毫秒值
              long todayTime = new Date().getTime();
      
              // 5、使用当前日期的毫秒值-出生日期的毫秒值
              long time = todayTime - birthdayDateTime;
      
              // 6、把毫秒值转换为天(s / 1000 / 60 / 60 / 24)
              System.out.println("您已经出生了:" + time / 1000 / 60 / 60 /24 + "天");
          }
      
      }
      
      // 运行结果
      请输出您的出生日期,格式:yyyy-MM-dd
      2019-10-22
      您已经出生了:5
posted on 2019-10-27 15:05  gmlgxx  阅读(66)  评论(0)    收藏  举报