Java中Date类和Calendar类的使用

67 篇文章 16 订阅

java.util 包中由许多常用的类组成,其中主要是用于处理一组对象的集合类。例如ArrayList和HashMap类;它还包含用于处理日期和时间的类,例如Date类和Calendar类;下面将介绍Date类和Calendar类。

1、Date类

Date类对象表示当前日期和时间,并提供操纵日期和时间各组成部分的方法。必须将Date对象转换为字符串,才能将其输出。

Date类的构造方法:

构造方法说明
Date()使用当天日期创建日期对象。
Date(long date)使用自1970年1月1日以后的指定毫秒数创建日期对象。
Date(int year, int month, int date)已过时。 从 JDK 1.1 开始,由 Calendar.set(year + 1900, month, date) 或 GregorianCalendar(year + 1900, month, date) 取代。
Date(int year, int month, int date, int hrs, int min)已过时。 从 JDK 1.1 开始,由 Calendar.set(year + 1900, month, date, hrs, min) 或 GregorianCalendar(year + 1900, month, date, hrs, min) 取代。
Date(int year, int month, int date, int hrs, int min, int sec)已过时。 从 JDK 1.1 开始,由 Calendar.set(year + 1900, month, date, hrs, min, sec) 或 GregorianCalendar(year + 1900, month, date, hrs, min, sec) 取代。
Date(String s)已过时。 从 JDK 1.1 开始,由 DateFormat.parse(String s) 取代。

Date类的常用方法:

方法说明
boolean after(Date when)如果日期在指定日期之后,返回 true。
boolean before(Date when)如果日期在指定日期之前,返回 true。
boolean equals(Object obj)如果两个日期相同,返回 true。
String toString()返回日期的格式化字符串,包括星期几;形式的: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
long getTime()返回自1970年1月1日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
void setTime(long time)设置日期对象,以表示自1970年1月1日起的指定毫秒数。
int hashCode()返回此对象的哈希码值。
int getDate()已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.DAY_OF_MONTH) 取代。
int getDay()已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.DAY_OF_WEEK) 取代。
int getHours()已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.HOUR_OF_DAY) 取代。
int getMinutes()已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.MINUTE) 取代。
int getMonth()已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.MONTH) 取代。
int getSeconds()已过时。从 JDK 1.1 开始,由 Calendar.get(Calendar.SECOND) 取代。
 int getTimezoneOffset()已过时。从 JDK 1.1 开始,由 -(Calendar.get(Calendar.ZONE_OFFSET) + Calendar.get(Calendar.DST_OFFSET)) / (60 * 1000) 取代。
int getYear()已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.YEAR) - 1900 取代。
int getTimezoneOffset()已过时。 从 JDK 1.1 开始,由 -(Calendar.get(Calendar.ZONE_OFFSET) + Calendar.get(Calendar.DST_OFFSET)) / (60 * 1000) 取代。
int getYear()已过时。从 JDK 1.1 开始,由 Calendar.get(Calendar.YEAR) - 1900 取代。
static long parse(String s)已过时。 从 JDK 1.1 开始,由 DateFormat.parse(String s) 取代。
void setDate(int date)已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.DAY_OF_MONTH, int date) 取代。
void setHours(int hours)已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.HOUR_OF_DAY, int hours) 取代。
void setMinutes(int minutes)已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.MINUTE, int minutes) 取代。
void setMonth(int month)已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.MONTH, int month) 取代。
void setSeconds(int seconds)已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.SECOND, int seconds) 取代。
void setYear(int year)已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.YEAR, year + 1900) 取代。
String toGMTString()已过时。 从 JDK 1.1 开始,由 DateFormat.format(Date date) 取代,使用 GMT TimeZone。
String toLocaleString()已过时。 从 JDK 1.1 开始,由 DateFormat.format(Date date) 取代。
static long UTC(int year, int month, int date, int hrs, int min, int sec)

已过时。 从 JDK 1.1 开始,由 Calendar.set(year + 1900, month, date, hrs, min, sec) 或 GregorianCalendar(year + 1900, month, date, hrs, min, sec) 取代,使用 UTC TimeZone,后跟 Calendar.getTime().getTime()。

示例:使用Date类显示当前日期和时间。

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

/**
 * Date类的使用示例
 * 
 * @author pan_junbiao
 *
 */
public class dateTest
{
	public static void main(String[] args)
	{
		// 创建Date类对象
		Date date = new Date();

		// 设置日期格式
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

		// 显示日期和时间
		System.out.println("您好,欢迎访问 pan_junbiao的博客");
		System.out.println("现在的时间:" + df.format(date));
	}
}

简单的写法:

java.text.SimpleDateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置日期格式
System.out.println(df.format(new java.util.Date()));// new Date()为获取当前系统时间

执行结果:

方法说明:

java.text.SimpleDateFormat: 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

日期和时间模式(注意大小写,代表的含义是不同的):

模式说明
yyyy
MM
dd
hh1~12小时制(1-12)
HH24小时制(0-23)
mm
ss
S毫秒
E星期几
D一年中的第几天
F一月中的第几个星期(会把这个月总共过的天数除以7)
w一年中的第几个星期
W一月中的第几星期(会根据实际情况来算)
a上下午标识
k和HH差不多,表示一天24小时制(1-24)。
K和hh差不多,表示一天12小时制(0-11)。
z表示时区 

 

2、Calendar类

根据给定的Date对象,Calendar类可以以整数(如:YEAR、MONTH和DATE)的形式检索信息。它是抽象类,因此无法像Date类一样实例化。

Calendar对象提供为特定语言或日历样式实现日期格式化所需的所有时间字段值。

提示:GregorianCalendar 是 Calendar的子类,它实现罗马形式的日历。

Calendar类的常用方法:

方法说明
void add(int field, int amount)将 amount 添加到 field 指定的时间或日期部分。
int get(int field)返回调用对象中 field 指定部分的值。例如,各部分可以具有的值包括:Calendar.YEAR、Calendar.MONTH 和 Calendar.DATE 等。
Calendar getInstance()

返回默认地区和时区的 Calendar 对象。

Date getTime()返回与调用对象具有相同时间的 Date 对象。
set(int field, int value)将在 value 中指定的值设置为调用对象的 field 所指定的时间或日期部分。field 中的值为 Calendar 定义的字段之一,如:Calendar.YEAR、Calendar.MONTH 等。
boolean after(Object when)如果 Calendar 实例的当前时间在 Calendar 对象 when 之后,则返回 true。
boolean before(Object when)如果 Calendar 实例的当前时间在 Calendar 对象 when 之前,则返回 true。
void clear()清除当前 Calendar 实例中的所有时间组成部分。
Object clone()返回调用对象的副本。
boolean equals(Object obj)如果当前日历实例表示的 Calendar 实例与对象 obj 相同,则返回 true。

示例:Calendar类的使用。

import java.util.Calendar;
import java.util.Date;

/**
 * Calendar类的使用示例
 * 
 * @author pan_junbiao
 *
 */
public class calendarTest
{
	public static void main(String[] args)
	{
		// 创建Calendar类对象
		Calendar objCalendar = Calendar.getInstance();

		// 显示日期和时间的各个组成部分
		System.out.println("显示日期和时间的各个组成部分:");
		System.out.println("年:" + objCalendar.get(Calendar.YEAR));
		System.out.println("月:" + objCalendar.get(Calendar.MONTH));
		System.out.println("日:" + objCalendar.get(Calendar.DATE));
		System.out.println("小时:" + objCalendar.get(Calendar.HOUR));
		System.out.println("分钟:" + objCalendar.get(Calendar.MINUTE));
		System.out.println("秒:" + objCalendar.get(Calendar.SECOND));

		// 当前时间添加30分钟,然后显示日期和时间
		objCalendar.add(Calendar.MINUTE, 30);
		Date objDate = objCalendar.getTime();
		System.out.println("\n当前时间添加30分钟后的日期和时间:");
		System.out.println(objDate);
	}
}

执行结果:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pan_junbiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值