zoukankan      html  css  js  c++  java
  • Java常用类Date相关知识

    Date:
    类 Date 表示特定的瞬间,精确到毫秒。

    在 JDK 1.1 之前,类 Date 有两个其他的函数。它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。

    Date中有很多过时的方法

    @Deprecated
    过时的,可能在之后的版本删除
    构造方法:
    Date() :

      表示创建对象的系统时间即当前时间(精确到毫秒值),

      打印输出其实调用了toString方法。
    Date(long date) :
      分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
      想表示基准时间之前的时间,Date可以传入负数。
      补充:最开始毫秒值是用int表示,最大的只能表示到2035年,后来改用long型表示


    测试代码:

     1 import java.util.Date;
     2 
     3 //Date 初始化
     4 public class Demo_01 {
     5     public static void main(String[] args) {
     6         Date d1=new Date();
     7         System.out.println("d1 = " + d1);//d1 = Tue Jul 09 19:50:56 CST 2019
     8         Date d2=new Date(10000000000L);
     9         System.out.println("d2 = " + d2);//d2 = Mon Apr 27 01:46:40 CST 1970
    10         //输出d1,d2其实调用了toString方法
    11         Date d3=new Date(-100000000L);
    12         System.out.println("d3 = " + d3);//d3 = Wed Dec 31 04:13:20 CST 1969
    13 
    14 
    15     }
    16 }


    成员方法:

      long getTime() :
        返回自基准时间以来此Date所代表的毫秒值。
        返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
      void setTime(long time) :
        设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。

    测试代码:

     1 import java.util.Date;
     2 
     3 //Date里的成员方法
     4 public class Demo_02 {
     5     public static void main(String[] args) {
     6         Date date = new Date();
     7         long time=date.getTime();
     8         System.out.println("time = " + time);//time = 1562673980563
     9         Date date1=new Date();
    10         System.out.println("date1 = " + date1);//date1 = Tue Jul 09 20:06:20 CST 2019
    11         date1.setTime(1000000000000L);
    12         System.out.println("date1 = " + date1);//date1 = Sun Sep 09 09:46:40 CST 2001
    13     }
    14 }


    日期的格式化和解析:

      为了使用更多格式的输出日期,这里使用了DateForat类,注意这是一个抽象类,作用就是格式化日期,不能实例化,需要通过创建子类(SimpleDateFormat)对象来调用方法。

    类 DateFormat
      概述DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。
    日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本 Date-->String)、解析(文本-> 日期 String -->Date)和标准化。

      格式化:日期 --> 文本 Date --> String
      解析: 文本 --> 日期 String --> Date


    方法:
      格式化方法:
        String format(Date date)
        将一个 Date 格式化为日期/时间字符串。
      解析方法:
        Date parse(String source)
        从给定字符串的开始解析文本,以生成一个日期。


    因为DateFormat是抽象类,无法实例化,所以需要创建一个它的子类对象来调用方法。
    类 SimpleDateFormat extends DateFormat:

    概述 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
    定义了以下模式字母(所有其他字符 'A' 到 'Z' 和 'a' 到 'z' 都被保留):

    (这里只写了一些常用的)
    y 年
    M 月
    d 日
    H 时
    m 分
    s 秒(小写)

    构造方法摘要 :
    SimpleDateFormat() :(不推荐使用)
      用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
    SimpleDateFormat(String pattern) :
      用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
      例如: DateDFormat df=new SimpleDateFoemat(”yyyy年MM月dd日 HH:mm:ss“);

    注意:用什么模式格式化就要用什么模式解析,不然会出现异常,这里先抛出异常

    测试代码:

     1 import java.text.ParseException;
     2 import java.text.SimpleDateFormat;
     3 import java.util.Date;
     4 
     5 //日期格式化
     6 //DateFormat 类
     7 //SimpleDateFormat extends DateFormat类
     8 public class Demo_03 {
     9     public static void main(String[] args) throws ParseException {
    10         Date time=new Date();
    11         SimpleDateFormat sf=new SimpleDateFormat("yyy年MM月dd日 HH:mm:ss");
    12         String s=sf.format(time);
    13         System.out.println("s = " + s);//s = 2019年07月09日 20:30:48
    14         Date d1=sf.parse(s);
    15         System.out.println("d1 = " + d1);
    16         System.out.println(d1.equals(time));//false
    17         Date time1=new Date(0);
    18         Date time2=new Date(0);
    19         System.out.println(time1.equals(time2));//ture
    20 
    21 
    22     }
    23 
    24 }

    练习题:
    1,计算来这个世界多少天了

     1 import java.text.DateFormat;
     2 import java.text.ParseException;
     3 import java.text.SimpleDateFormat;
     4 import java.util.Date;
     5 
     6 //算一下你来到这个世界多少天?
     7 //分析:
     8 //    1. 将字符串解析成Date对象
     9 //    2. 创建一个表示当前时间的对象,计算两者之间的天数
    10 public class HomeWork02 {
    11     public static void main(String[] args) throws ParseException {
    12         String s="1997年02月15日0:0:0";
    13         DateFormat df=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    14         Date birthday=df.parse(s);
    15         Date nowaday=new Date();
    16         long days=  (nowaday.getTime() - birthday.getTime()) / (1000 * 60 * 60 * 24);
    17         System.out.println(days);
    18 
    19     }
    20 }


    2.制作一个工具类DateUtil:提供两个方法:1.将日期格式化成字符串,2,将字符串解析成日期

     1 import java.text.DateFormat;
     2 import java.text.ParseException;
     3 import java.text.SimpleDateFormat;
     4 import java.util.Date;
     5 
     6 //制作一个工具类
     7 public class DateUtil {
     8     private DateUtil(){}
     9 
    10     /**
    11      * 将日期按照给定的格式进行格式化
    12      * @param date 日期
    13      * @param pattern 指定的格式
    14      * @return 格式化后的文本
    15      */
    16     public String Date2String(Date date, String pattern) {
    17         DateFormat df = new SimpleDateFormat(pattern);
    18         return df.format(date);
    19     }
    20 
    21     /**
    22      * 将字符串按照给定的格式解析成日期
    23      * @param date 给定的字符串
    24      * @param pattern 给定的模式
    25      * @return 日期对象
    26      * @throws ParseException   如果不能按照给定的格式进行解析,就抛出ParseException
    27      */
    28     public Date String2Date(String date,String pattern) throws ParseException {
    29         DateFormat df=new SimpleDateFormat(pattern);
    30         return df.parse(date);
    31     }
    32 }



  • 相关阅读:
    小米手机4 rom 下载链接
    java 两个线程交替打印到100
    获取积分最多的人(二)
    刷题通过的题目排名
    考试分数(二)
    牛客的课程订单分析(二)
    牛客的课程订单分析(三)
    docker使用小记
    Dynamic Graph Collaborative Filtering
    Learnable Embedding Sizes for Recommender Systems
  • 原文地址:https://www.cnblogs.com/zhaoyuan72/p/11160490.html
Copyright © 2011-2022 走看看