深入了解Java核心类库--Date,Calendar,DateFormat类

目录
  • 一、Date
    • 1.1 构造方法
      • 1.1.1 Date()
      • 1.1.2 Date(long date)
    • 1.2 常用方法
    • 1.3 其他方法
  • 二、Calendar(抽象)
    • 2.1 获取时间 get()
    • 2.2 设置时间
    • 2.3 时间计算
    • 2.4 其它方法
  • 三、DateFormat(抽象)
    • 3.1 构造方法
  • 总结

一、Date

  • Date类表示特定的时刻,精度为毫秒
  • Date的两个附加功能:Calendar、DateFormat

Calendar类应该用于在日期和时间字段之间进行转换

DateFormat类应该用于格式化和解析日期字符串

不推荐使用Date中的相应方法

1.1 构造方法

1.1.1 Date()

分配时间,根据当前的默认毫秒值创建日期对象

	Date d = new Date();
	System.out.println(d);//当前时间:Tue Jun 15 13:44:44 CST 2021

1.1.2 Date(long date)

从1970.1.1 8:00:00开始,根据给定的毫秒值创建日期对象

	Date d = new Date(1000*60*60*24);
	System.out.println(d);//Fri Jan 02 08:00:00 CST 1970

1.2 常用方法

Modifier and Type Method Description
long getTime() 返回表示的1970年1月1日00:00:00 GMT以来的毫秒数
void setTime​(long time) 设置时间,设置为1970年1月1日00:00:00之后的 time毫秒的时间点
String toString() 将此 Date对象转换成String形式
        Date d = new Date();
        System.out.println(d);//Tue Jun 15 13:53:39 CST 2021
        System.out.println(d.getTime())//获取当前时间的毫秒数:1623736419381
        System.out.println(d.toString());//Tue Jun 15 13:53:39 CST 2021
        d.setTime(24*60*60*1000);//设置时间
        System.out.println(d.getTime());//86400000
        System.out.println(d);//Fri Jan 02 08:00:00 CST 1970
        System.out.println(d.toString());//Fri Jan 02 08:00:00 CST 1970

1.3 其他方法

Modifier and Type Method Description
int hashCode() 返回此对象的哈希码值。
boolean after​(Date when) 测试此日期是否在指定日期之后。
boolean before​(Date when) 测试此日期是否在指定日期之前。
Object clone() 返回此对象的副本。
int compareTo​(Date anotherDate) 比较两个日期的订购。
boolean equals​(Object obj) 比较两个相等的日期。
static Date from​(Instant instant) 从 Instant对象获得 Date的实例。

二、Calendar(抽象)

日历类,提供操作日历字段的方法

2.1 获取时间 get()

        Calendar d = Calendar.getInstance();
        System.out.println("获取当前时间:");
        System.out.println("年:"+d.get(d.YEAR));
        System.out.println("月:"+(d.get(d.MONTH)+1));//月从0开始,所以要+1
        System.out.println("日:"+d.get(d.DAY_OF_MONTH));
        System.out.println("时:"+d.get(d.HOUR_OF_DAY));
        System.out.println("分:"+d.get(d.MINUTE));
        System.out.println("秒:"+d.get(d.SECOND));
           获取当前时间:
	年:2021
	月:6
	日:15
	时:14
	分:25
	秒:32

2.2 设置时间

  • set()
        System.out.println("设置当前时间:");
        Calendar d = Calendar.getInstance();
        //单独设置
        d.set(d.YEAR,2000);
        System.out.println("年:"+d.get(d.YEAR));
        //一起设置,d.set(year, month, date, hourOfDay, minute, second);
        d.set(2000, 1, 1, 23, 59, 59);
        System.out.println("年:"+d.get(d.YEAR));
        System.out.println("月:"+d.get(d.MONTH));
        System.out.println("日:"+d.get(d.DAY_OF_MONTH));
        System.out.println("时:"+d.get(d.HOUR_OF_DAY));
        System.out.println("分:"+d.get(d.MINUTE));
        System.out.println("秒:"+d.get(d.SECOND));
	设置当前时间:
	年:2000
	年:2000
	月:1
	日:1
	时:23
	分:59
	秒:59

2.3 时间计算

  • add()
        Calendar d = Calendar.getInstance();
        d.set(2000, 0, 31, 23, 59, 59);
        System.out.println(d.getTime());
        d.add(d.YEAR,10);//增加十年
        System.out.println("year+10:"+d.getTime());
        d.add(d.MONTH,1);//增加一个月
        System.out.println("month+1:"+d.getTime());
		Mon Jan 31 23:59:59 CST 2000
		year+10:Sun Jan 31 23:59:59 CST 2010
		month+1:Sun Feb 28 23:59:59 CST 2010

2.4 其它方法

Modifier and Type Method Description
int getActualMaximum​(int field) 给定此 Calendar的时间值,返回指定日历字段可能具有的 Calendar
int getActualMinimum​(int field) 给定此 Calendar的时间值,返回指定日历字段可能具有的 Calendar
String getCalendarType() 返回此 Calendar的日历类型
int getFirstDayOfWeek() 得到一周的第一天是什么
static Calendar getInstance() 使用默认时区和区域设置获取日历
static Calendar getInstance​(Locale aLocale) 使用默认时区和指定的区域设置获取日历
static Calendar getInstance​(TimeZone zone) 使用指定的时区和默认语言环境获取日历
static Calendar getInstance​(TimeZone zone, Locale aLocale) 获取具有指定时区和区域设置的日历
TimeZone getTimeZone() 获取时区。

三、DateFormat(抽象)

格式化和解析日期字符串(将Date创建转化为日常格式)

3.1 构造方法

设置格式

		//y:年  M:月  d:日  H:时  m:分  s:秒
        SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String text1 = format.format(new Date());//将date转换成已经设置格式的字符串
        System.out.println(text1);
        System.out.println(format.parse("2021年6月10日 10:10:10"));//将日期字符串转换为Date对象
	2021年06月15日 15:00:10
	Thu Jun 10 10:10:10 CST 2021

面试题通常会问道时间计算:输入→parse→date对象→gettime()→相减得毫秒→换算

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • Java多线程环境下SimpleDateFormat类安全转换

    一.SimpleDateFormat类 package state; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * SimpleDateFormat类负责日期的转换与格式化 * 解决SimpleDateFormat类多线程环境下转换错误问题 * @author zc * */ public class SimpleDateFormatThread e

  • 详解Java中格式化日期的DateFormat与SimpleDateFormat类

    DateFormat 1. DateFormat 介绍 DateFormat 的作用是 格式化并解析"日期/时间".实际上,它是Date的格式化工具,它能帮助我们格式化Date,进而将Date转换成我们想要的String字符串供我们使用 不过DateFormat的格式化Date的功能有限,没有SimpleDateFormat强大:但DateFormat是SimpleDateFormat的父类.所以,我们先对DateFormat有个整体了解,然后再学习SimpleDateFormat.

  • Java BigInteger类,BigDecimal类,Date类,DateFormat类及Calendar类用法示例

    本文实例讲述了Java BigInteger类,BigDecimal类,Date类,DateFormat类及Calendar类用法.分享给大家供大家参考,具体如下: BigInteger类 发 package cn.itcast_01; import java.math.BigInteger; /* * BigInteger:可以让超过Integer范围内的数据进行运算 * * 构造方法: * BigInteger(String val) */ public class BigIntegerDe

  • Java多线程编程中使用DateFormat类

    DateFormat 类是一个非线程安全的类.javadocs 文档里面提到"Date formats是不能同步的. 我们建议为每个线程创建独立的日期格式. 如果多个线程同时访问一个日期格式,这需要在外部加上同步代码块." 以下的代码为我们展示了如何在一个线程环境里面使用DateFormat把字符串日期转换为日期对象.创建一个实例来获取日期格式会比较高效,因为系统不需要多次获取本地语言和国家. public class DateFormatTest { private final Da

  • Java使用Calendar类实现动态日历

    本文实例为大家分享了Java使用Calendar类实现动态日历的具体代码,供大家参考,具体内容如下 题目: 使用Calendar类实现一个动态日历,要求能够通过输入一个年份,月份显示当月的日历布局,并且将周六周天使用"[]"包裹起来,另外要求如果显示为当月日历时,把当天的日期使用"*"标记出来. 步骤分析: 1.打印日历 1.1当月总天数 1.2当月第一天是周几(注意:月份是从0开始,星期是从周日(1)开始) 2.周末用[]包裹 3.当前日期前加*号 代码实现: p

  • 深入了解Java核心类库--Date,Calendar,DateFormat类

    目录 一.Date 1.1 构造方法 1.1.1 Date() 1.1.2 Date(long date) 1.2 常用方法 1.3 其他方法 二.Calendar(抽象) 2.1 获取时间 get() 2.2 设置时间 2.3 时间计算 2.4 其它方法 三.DateFormat(抽象) 3.1 构造方法 总结 一.Date Date类表示特定的时刻,精度为毫秒 Date的两个附加功能:Calendar.DateFormat Calendar类应该用于在日期和时间字段之间进行转换 DateFo

  • 深入了解Java核心类库--BigDecimal和System类

    目录 BigDecimal 类 一. 概述 常用字段 常用构造方法 常用方法 System类 三个成员变量 arraycopy​(Object src, int srcPos, Object dest, int destPos, int length) 总结 BigDecimal 类 一. 概述 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算. 开发中,如果我们需要精确计算的结果,则必须使用BigDecimal类来操作. BigDec

  • Java常用类库Apache Commons工具类说明及使用实例详解

    Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍. 组件 功能介绍 BeanUtils 提供了对于JavaBean进行各种操作,克隆对象,属性等等. Betwixt XML与Java对象之间相互转换. Codec 处理常用的编码方法的工具类包 例如DES.SHA1.MD5.Base64等. Collections java集合框架操作. Compress java提供文件打包 压缩类库. Con

  • 深入理解JAVA基础类库中对象Object类

    引言 Object类是所有类.数组的父类,位于java.lang 包下也就是说,Java允许把所有任何类型的对象赋给Object类型的变量.当定义一个类时没有使用extends关键字为它显式指定父类,则该类默认继承Object父类. 例如: public class Dog{ ...... } 等价于: public class Dog extends Object { ...... } Object常用方法 Object 类属于java.lang包,此包下的所有类在使用时无需手动导入,系统会在

  • 深入了解Java核心类库--Math类

    目录 Java常用类库Math 一.Field Summary 二.Method Summary 2.1 常用方法 2.1.1 部分方法源码 2.2 算数运算 2.3 三角函数 2.4 其他不常用方法 总结 Java常用类库Math 类Math包含用于执行基本数字运算的方法,例如基本指数,对数,平方根和三角函数 一.Field Summary Modifier and Type Field Description static double E 自然对数的基数 static double PI

  • 深入了解Java核心类库--Arrays类

    目录 Java常用类库Arrays 一.常用方法 1.1 toString 1.2 Sort 1.2.1 sort​(T[] a, int fromIndex, int toIndex) 1.2.2 Sort(T[] a) 1.2.3 其它 1.3 copyOf 1.4 mismatch 1.5 binarySearch 1.5.1 binarySearch​(T[] a, int fromIndex, int toIndex, T key) 1.5.2 binarySearch​(T[] a,

  • 深入了解Java核心类库--Objects类

    目录 1 Objects 1.1 Objects方法 1.2 Objects常用方法 1.2.1 equals(Object a, Object b) 1.2.2 isNull(Object obj) 1.2.3 nonNull(Object obj) 1.2.4 requireNonNull(T obj) 1.3 Objects源码 2 区别于Object 2.1 Object构造方法 2.2 Object其他方法 2.2.1 equals(Object obj) 2.2.2 toString

  • 深入了解Java核心类库--String类

    目录 一. 简介 零碎知识点 字符串常量池 堆在逻辑上的划分 二. 创建对象 2.1.1 直接引用常量区 2.1.2 使用构造方法 2.1.3 两种实例化方法的区别 三.常用方法 总结 一. 简介 零碎知识点 extends Object implements serializable,Comparable< String >,charSequence String类表示字符串,所有字符串文字都是此类的对象 字符串是不变的,值在创建后无法更改 对象一旦声明则不可改变,改变的只是地址,原来的字符

  • 深入了解Java核心类库--泛型类

    目录 1.1 泛型的使用 1.1.1 泛型类 1.1.2 泛型接口 1.1.3 泛型方法 1.1.4 tips 1.2 泛型限制类型 1.3 通配符? 1.3.1 上界限定 1.3.2 下届限定 1.3.3 无限制 1.4 泛型的作用 总结 1.1 泛型的使用 泛型:参数化模型(不确定,后续使用时指定类型) 1.1.1 泛型类 1.1.2 泛型接口 实现接口时,可以选择或不选择指定泛型类型 public interface IntercaceName<T>{ T getData(); } ①指

随机推荐