Loading

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 }

 



posted @ 2019-07-09 21:08  半瓶牛奶🥛  阅读(320)  评论(0编辑  收藏  举报