Java常用类之日期操作类

日期操作类

在Java中对日期的操作类常用的有以下4种:

  1. Date类

  2. Calendar类

  3. DateFormat类

  4. SimpleDateFormat类

一起来了解一下各个类如何使用的吧!!!

 

一、Date类

1、Date表示特定的瞬间,精确到毫秒。Date类中的大部分方法都已被Calendar类中的方法所取代。2、时间单位:

1秒=1000毫秒
1毫秒=1000微秒
1微秒=1000纳秒

3、在类 Date 所有可以接受或返回年、月、日期、小时、分钟和秒值的方法中,将使用下面的表示形式:

  • 年份 y 由整数 y - 1900 表示。

  • 月份由从 0 至 11 的整数表示;0 是一月、1 是二月等等;因此 11 是十二月。

  • 日期(一月中的某天)按通常方式由整数 1 至 31 表示。

  • 小时由从 0 至 23 的整数表示。因此,从午夜到 1 a.m. 的时间是 0 点,从中午到 1 p.m. 的时间是 12 点。

  • 分钟按通常方式由 0 至 59 的整数表示。

  • 秒由 0 至 61 的整数表示;值 60 和 61 只对闰秒发生,尽管那样,也只用在实际正确跟踪闰秒的 Java 实现中。于按当前引入闰秒的方式,两个闰秒在同一分钟内发生是极不可能的,但此规范遵循 ISO C 的日期和时间约定

常用方法

方法描述
boolean after(Date when) 测试此日期是否在指定日期之后。
boolean before(Date when) 测试日期是否在指定日期之前
int compareTo(Date anotherDate) 比较两个日期的顺序。如果参数 Date 等于此 Date,则返回值 0;如果此 Date 在 Date 参数之前,则返回小于 0 的值;如果此 Date 在 Date 参数之后,则返回大于 0 的值。
public long getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

 

实例

package lesson2;

import java.util.Date;

public class Demo06 {
public static void main(String[] args) {
Date date1 = new Date();
//打印出今天的时间
System.out.println("=====打印出今天的时间======");
System.out.println(date1.toString());
System.out.println(date1.toLocaleString());
System.out.println("=====打印出昨天的时间======");
Date date2 = new Date(date1.getTime() - (60 * 60 * 24 * 1000));
System.out.println(date2);

//方法 afterbefore
boolean b1 = date1.after(date2);
System.out.println(b1);

boolean b2 = date1.before(date2);
System.out.println(b2);

//比较 compareTo()
int d = date2.compareTo(date1);
System.out.println(d);

//比较 equals()
boolean b3 = date1.equals(date2);
System.out.println(b3);
}
}

 

 

 

 

 

 

 

二、Calendar类

1、Calendar提供了获取或设置各种日历字段的方法。

2、这个类本身是一个抽象类,可以依靠对象的多态性,通过子类进行父类的实例化操作。

3、由于修饰符为protected,所以也无法创建对象。但Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化:


Calendar rightNow = Calendar.getInstance();

 


常用方法

 

方法描述
static Calendar getInstance() 使用默认时区和区域获取日历
public final void set(int year,int month, int date, int hourOfDay,int minute,int second) 设置年、月、日、时、分、秒。
public int get(int field) 返回指定字段的值。字段如年、月、日等
void setTime(Date date) 使用给定的 Date 设置此 Calendar 的时间。
Date getTime() 返回一个表示此 Calendar 时间值的 Date 对象。
void add(int field,int amount) 按照日历的规则,给指定字段添加或减少时间
long getTimeMillies() 以毫秒为单位返回该日历的时间值

 

Calendar类中的常量

 

常量描述
public static final int YEAR 取得年
public static final int MONTH 取得月
public static final int DAY_OF_MONTH 取得日
public static final int HOUR_OF_DAY 取得小时,24小时制
public static final int MINUTE 取得分
public static final int SECOND 取得秒
public static final int MILLISECOND 取得毫秒

 

实例

 

 

package lesson2;

import java.util.Calendar;

public class Demo07 {
public static void main(String[] args) {
//1、创建Calendar对象
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime().toLocaleString());
//打印毫秒值
System.out.println(calendar.getTimeInMillis());

//2、获取时间信息
//获取年
int year = calendar.get(Calendar.YEAR);
//获取月 0-11
int month = calendar.get(Calendar.MONTH);
//获取日
int day = calendar.get(Calendar.DAY_OF_MONTH);//Date
//小时
int hour = calendar.get(Calendar.HOUR_OF_DAY);
//分钟
int minute = calendar.get(Calendar.MINUTE);
//
int second = calendar.get(Calendar.SECOND);
System.out.println(year+""+(month+1)+""+day+""+hour+":"+minute+":"+second);

//3、修改时间
Calendar calendar2 = Calendar.getInstance();
calendar2.set(Calendar.DAY_OF_MONTH,5);
System.out.println(calendar2.getTime().toLocaleString());

//4add方法修改时间
calendar2.add(Calendar.HOUR,1);
//calendar2.add(Calendar.HOUR,-1);//减少一小时
System.out.println(calendar2.getTime().toLocaleString());

//5、补充方法
calendar2.add(Calendar.MONTH,5);
int max = calendar2.getActualMaximum(Calendar.DAY_OF_MONTH);
int min = calendar2.getActualMinimum(Calendar.DAY_OF_MONTH);
System.out.println(max);
System.out.println(min);
}
}


 

 

 

 

 

三、SimpleDateFormat类

如果要得到用户自己需要的日期显示格式,则必须通过DateFormat的子类SimpleDateFormat类。

 

方法描述
public Date parse(String source)throws ParseException 将一个包含日期的字符串变为Date类型
public final String format(Date date) 将一个Date类型按照指定格式变为String类型

 

实例

 

package lesson2;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo08 {
public static void main(String[] args) throws Exception{
//1、创建SimpleDateFormat对象 y: M:

// 或者SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
//2、创建Date
Date date = new Date();
//格式化date(把日期转为字符串)
String str=sdf.format(date);
System.out.println(str);

//解析(把字符串转为时间)
Date date2 = sdf.parse("1990/05/01");//此处有异常,需要抛出
System.out.println(date2);
}
}

 

 

posted @ 2022-09-01 21:07  屯子里唯一的架构师  阅读(1043)  评论(0编辑  收藏  举报