前言:Java.util.*工具包中,包含了集合框架,旧集合类,事件模型,日期和时间设施,国际化和其他使用程序类

(字符串、随机数生成器和位数组)

一、日期类Date

 1.概述

  Date是一个薄包装类,没有定义很多方法,而且很多方法已经被弃用,但是它仍是常被使用的类。

  Date它允许将日期解释为年,月,日,小时,分钟和第二个值,

  而且DateFormat类应用于格式化和解析日期字符串,允许JDCBC将其标识为SQLDate值。

  public class Date extends Object
   implements Serializable, Cloneable, Comparable<Date>

 2.构造方法

  目前在使用的构造方法只有:Date();

  Date date = new Date();

  Date date = new Date(long);

  分配一个Date对象,并初始化它,以便它代表它被分配的时间,测量到最近的毫秒。

 3.常用方法

  boolean after(Date when) => 测试此日期是否在指定日期之后。

  boolean before(Date when) => 测试此日期是否在指定日期之前。

  Object clone() => 返回此对象的副本

  int compareTo(Date anotherDate) => 比较两个日期进行比较(-1、0、1)

  boolean equals(Object obj) => 比较连个日期是否平等

  static Date from(Instant instant) => 从Instant对象获取一个Date实例

  long getTime()  =>返回自1970年1月1日以来,由此 Date对象表示的00:00:00 GMT的毫秒 数 。

 4.应用案例 

public class DateTest {
public static void main(String[] args) {
//day03.DateFormat.Date(n)表示距离1970年1月1日0点0分0秒的时间(以毫秒为单位计算)
Date date = new Date(0);
System.out.println(date); Date now = new Date();
System.out.println(now.after(date));
System.out.println(now.before(date));
//getTime()方法表示该Date对象距离1970年1月1日0点0分0秒以毫秒计算的时间
System.out.println(now.getTime());
}
}

  

二、Calendar日历类

 1.概述

  Calendar类时相对比较新的日期类,它是一个抽象类,

  Calendar类可以为在某一特定时刻和一组之间的转换的方法calendar fields如YEAR , MONTH , DAY_OF_MONTH , HOUR等,以及用于操纵该日历字段。

  public abstract class Calendar extends Object
    implements Serializable,  Cloneable, Comparable<Calendar>

 2.初始化

  Calendar日共了一种类方法getInstance(),用于获取此类的一般有用的对象。

  Calendar的getInstance方法返回一个Calendar对象,其 日历字段已使用当前日期和时间进行初始化。

  eg.  Calendar calendar = Calendar.getInstance();

 3.常用的方法

  boolean after(Object when) => 返回 Calendar是否 Calendar指定时间之后的时间 Object 。 
    boolean before(Object when) => 返回此 Calendar是否 Calendar指定的时间之前指定的时间 Object 。

  void set(int year, int month, int date) => 设置日历字段中的值 YEAR , MONTH和 DAY_OF_MONTH 。

  add(int field, int amount) =>  根据日历的规则,将指定的时间量添加或减去给定的日历字段。
     roll(int field, int amount)  =>  将指定(签名)金额添加到指定的日历字段,而不更改较大的字段。

 4.常用的类变量

  public static final int YEAR => get字段号和set表示年份

  public static final int MONTH => get和set字段编号表示月份。
     (注意genInstance获得的月份为0~11,代表1到12月)
     public static final int DATE => get字段编号和set本月的日期。
     public static final int WEEK_OF_YEAR =>
     public static final int WEEK_OF_MONTH =>
     public static final int DAY_OF_YEAR =>

 5.应用案例

public class CalendarDemo {
public static void main(String[] args) {
//初始化日期类Calendar
Calendar rightNow = Calendar.getInstance();
System.out.println(rightNow.toInstant());
System.out.println("目前时间为:" +
rightNow.get(Calendar.YEAR) + "年" +
//注意getInstance获得的月份范围为0~11,需要+1才为正确月份
(rightNow.get(Calendar.MONTH)+1) + "月" +
rightNow.get(Calendar.DATE) + "日"
); Calendar calendar = Calendar.getInstance();
calendar.set(2008,11,2,14,30);
System.out.println(calendar.get(Calendar.YEAR) + " " +
                calendar.get(Calendar.MONTH) + " " +
                calendar.get(Calendar.DATE));
System.out.println("==============================");
calendar.add(Calendar.YEAR,-10);
System.out.println(calendar.get(Calendar.YEAR) + " " +
                calendar.get(Calendar.MONTH) + " " +
                calendar.get(Calendar.DATE));
System.out.println("==============================");
calendar.roll(Calendar.MONTH,+3);
System.out.println(calendar.get(Calendar.YEAR) + " " +
                calendar.get(Calendar.MONTH) + " " +
                calendar.get(Calendar.DATE));
System.out.println("==============================");
}
} 

三、DateFormat => 输出的是xxxx年xx月xx日

 1.概述

  DateFormat是格式化日期,它可以格式化和解析任何区域设置的日期。

  DateFormat是一个抽象类,不能直接实例化,可以通过getDateFormatInstance类方法定义。

  public abstract class DateFormat extends Format

 2.构造方法

  public static final DateFormat getDateInstance()
     eg.  DateFormat df = DateFormat.getDateInstance();

 3.主要方法

  String format(Date date) => 将日期格式化成日期/时间的字符串。

  Date parse(String source) => 从给定字符串的开始解析文本以生成日期。

 4.应用案例

public class DateFormatDemo {
public static void main(String[] args) {
DateFormat df = DateFormat.getDateInstance();
System.out.println(df);
String t1 = df.format(new Date());
System.out.println(t1);
Date date = null;
try {
date = df.parse(t1);
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
}
}

  

四、SimpleDateFormat

 1.概述

  SimpleDateFormat实现了DateFormat抽象类,它是实现类。

  SimpleDateFormat允许从选择日期时间格式化的任何用户定义的模式开始。

  public class SimpleDateFormat extends DateFormat

 2.构造方法

  SimpleDateFormat sdf = new SimpleDateFormat();

  SimpleDateFormat sdf = new SimpleDateFormat(String pattern);

 3.常用方法

  void applyPattern(String pattern) => 将给定的模式字符串应用于此日期格式。

  String format(Date date) => 将日期格式化成日期/时间字符串。

  Date parse(String source) => 从给定字符串的开始解析文本以生成日期。

 4.应用案例

public class SimpleDateFormatDemo {
public static void main(String[] args) {
SimpleDateFormat smf = new SimpleDateFormat();
Calendar calendar = Calendar.getInstance();
String s = "2019年2月2日 星期六 19时10分55秒";
String pattern = "yyyy年MM月dd日 E HH时mm分ss秒";
smf.applyPattern(pattern);
try {
Date date = smf.parse(s);
System.out.println(date.getTime());
calendar.setTime(date);
System.out.println(calendar.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
}
}

  

实战小案例

  需求:计算自己活了多少天!

public class LivingDay {
public static void main(String[] args) {
//获取用户生日和当前时间
long livingdays = 0;
while (true) {
System.out.println("请输入您的生日!格式样例:1998-02-09");
Scanner in = new Scanner(System.in);
String birthday = in.nextLine();
SimpleDateFormat smf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date bornDate = smf.parse(birthday);
Date nowDate = new Date();
//调用clacDays方法计算时间
livingdays = calcDays(nowDate, bornDate);
} catch (ParseException e) {
e.printStackTrace();
}
//输出结果时间
System.out.println("您已经度过了" + livingdays + "天的美好时光!");
}
} /**
* 计算两个时期之间的天数
* @param nowDate
* @param bornDate
* @return
*/
private static Long calcDays(Date nowDate, Date bornDate) {
long days = 0;
long daysTS = nowDate.getTime() - bornDate.getTime();
days = daysTS/1000/60/60/24;
return days;
}
}

  总结几个重要的方法!!

  1.SimpleDateFormat的parse()  =>将字符串转化为Date类型的日期

  2.Date的getTime()       =>将Date类型的日期转化为long类型的时间戳

  3.Date(long)的构造方法      =>将long类型时间戳转化为Date类型时间

  4.SimpleDateFormat的format()     =>将Date类型日期转化为StringBuffer类型的字符串时间

Java常用API——时间类的更多相关文章

  1. Java常用API(ArrayList类)

    Java常用API(ArrayList类) 我们为什么要使用ArrayList类? 为了更加方便的储存对象,因为使用普通的数组来存储对象太过麻烦了,因为数组的一个很大的弱点就是长度从一开始就固定了,所 ...

  2. Java常用API(Math类)

    Java常用API(Math类) Math类的作用 java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数.类似这样的工具 类,其所有方法均为静态方法,并且 ...

  3. Java常用API(Arrays类)

    Java常用API(Arrays类) 什么是Arrays类? java.util.Arrays 此类包含用来操作数组的各种方法,比如排序和搜索等.其所有方法均为静态方法,调用起来 非常简单. 这里我们 ...

  4. Java常用API(String类)

    Java常用API(String类) 概述: java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例 1. ...

  5. Java常用API(Random类)

    Java常用API(Random类) Random:是一个用于生成随机数的类 构造方法 public Random() :创建一个新的随机数生成器. 返回随机数的方法 public int nextI ...

  6. Java常用API(Scanner类)

    Java常用API( Scanner类)1 1.Scanner类 首先给大家介绍一下什么是JavaAPI API(Application Programming Interface),应用程序编程接口 ...

  7. java 常用API 时间 练习

    package com.orcal.demc01; import java.util.Date; public class Xuexi { public static void main(String ...

  8. java 常用API 时间

    package com.orcal.demc01; import java.text.ParseException; import java.text.SimpleDateFormat; import ...

  9. Java 常用API(二)

    目录 Java 常用API(二) 1. Object类 2. Date类 概述 构造方法和成员方法 3. DateFormat类 概述 SimpleDateFormat类 练习 4. Calendar ...

随机推荐

  1. hadoop 透明加密

    hadoop 透明加密 hadoop 透明加密 kms transparent 2015年04月09日 18:12:20 糖糖_ 阅读数:12248 标签: transparenthadoop kms ...

  2. Mysql8.0安装步骤

    Mysql8.0安装步骤 2018年05月10日 14:39:05 93年的香槟 阅读数:19628 标签: mysql 更多 个人分类: 数据库   版权声明:本文为博主原创文章,未经博主允许不得转 ...

  3. python使用 HTMLTestRunner.py生成测试报告

    HTMLTestRunner.py python 2版本 下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html 使用时,先建立一个”PyDe ...

  4. LeetCode(115):不同的子序列

    Hard! 题目描述: 给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数. 一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字 ...

  5. 【ES】学习10-聚合3

    聚合是在查询匹配的文档中做统计的 不指定查询语句时,从所有文档中匹配. 下面两个语句等价: GET /cars/transactions/_search { , "aggs" : ...

  6. laravel 多对多关联 attach detach sync

    用户表和角色表,多对多关联,一个用户有多个角色,一个角色属于多个用户 添加多对多关联 attach: 给1号用户添加1号角色,并把关联表的column字段赋值为$value,后边的数组需要的时候再添加 ...

  7. 通过iostat来查看linux硬盘IO性能|实例分析

    iostat查看linux硬盘IO性能 rrqm/s: 每秒进行 merge 的读操作数目.即 delta(rmerge)/s wrqm/s: 每秒进行 merge 的写操作数目.即 delta(wm ...

  8. animate方法使用总结

    <!DOCTYPE html><html lang="en" class="loading"><head> <meta ...

  9. docker日志清理

    前言:docker运行久了,会发现它的映射磁盘空间爆满,尤其是yum安装的docker的 解决方法: 1. 用脚本清理,一般yum安装的docker,其存储空间一般都在/var/lib/docker/ ...

  10. python functools

    # 工具函数import functools print(dir(functools)) # partial函数(偏函数)def showarg(*args,**kw): print(args) pr ...