【java】日期类 Date类 与 SimpleDateFormat类 与 Calendar类

本文详细介绍了Java中的Date类、SimpleDateFormat类和Calendar类的使用。Date类用于表示特定时间,提供了获取和设置毫秒值的方法。SimpleDateFormat类用于日期和时间的格式化与解析,通过模式字符串定义格式。Calendar类作为抽象类,提供了日期字段的获取、添加和设置等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Date类 java.util.Date

代表了一个特定的时间,以毫秒为精度

构造方法

public Date()  分配一个Date对象,并初始化,以便代表它被分配的时间,精确到毫秒

public Date(long date)  分配一个Date对象,并将其初始化为从标准基准时间起指定的毫秒数     (1970年一月一日起)

Date类常用方法

public long getTime()  获取日期对象从1970年1月1日00:00:00到现在的毫秒值

public void setTime(long time)  设置时间,给的是毫秒值(注意时差)

 

实例如下

import java.util.Date;

public class Ddate {

	public static void main(String[] args) {

		Date d=new Date();//Date d=new Date(20000);
	    System.out.println(d.getTime());
	    d.setTime(3600);
	    System.out.println(d.getTime());	

	}

}

 

SimpleDateFormat类 java.text.SimpleDateFormat

用于以区域设置敏感的方式格式化和解析日期的具体类

日期和时间格式由日期和时间模式字符串指定。 在日期和时间模式字符串中,从'A''Z'以及从'a''z'未加引号的字母被解释为表示日期或时间字符串的组成部分的模式字母。 

常用模式字母及对应关系如下
y
M
d
H
m
s

 构造方法

public SimpleDateFormat()  构造一个 SimpleDateFormat使用默认模式和日期格式符号默认设置。

public SimpleDateFormat(String pattern)   构造一个SimpleDateFormat使用给定的模式和默认的   日期格式符号设置。

 

SimpleDateFormat的格式化与解析日期

格式化(Date->String) public final String format(Date date)  将日期格式化为日期/时间字符串

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

 

实例如下 

package API;

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

public class Simpledateformat {

	public static void main(String[] args) throws ParseException {
		//parse()过时 抛出异常throws ParseException
		
		SimpleDateFormat sim=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		System.out.println(sim);//java.text.SimpleDateFormat@ca92313f
		Date d=new Date();
		String s=sim.format(d);//Date->String
		System.out.println(s);//2022年03月30日 03:23:27
		String ss="2003-03-28 00:00:00";
		
		//SimpleDateFormat simp=new SimpleDateFormat("yyyy MM dd HH:mm:ss");
		/*Exception in thread "main" java.text.ParseException: Unparseable date: "2003-03-28 00:00:00"
	      at java.base/java.text.DateFormat.parse(DateFormat.java:396)
	      at API.Simpledateformat.main(Simpledateformat.java:22)
         */
		//格式错误,yyyy MM dd HH:mm:ss与2003-03-28 00:00:00格式不对应
		
		SimpleDateFormat simp=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date dd=simp.parse(ss);
		System.out.println(simp);//java.text.SimpleDateFormat@4f76f1a0
		//若直接打印SimpleDateFormat对象只会得到地址值,所以需要格式化与解码
		System.out.println(dd);//Fri Mar 28 00:00:00 CST 2003


	}

}

 

Calendar类 java.util.Calendar

public abstract class Calendar 抽象类,不能直接实例化。为在某一特定时刻和一段日历字段的转换提供了一些方法,并为操作日历字段提供了一些方法

Calendar提供了一个类方法getInstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化;  如下

Calendar 对象名=Calendar.getInstance();//多态的形式

Calender的常用方法

public int get(int field)  返回给定日历字段的值

public abstract void add(int filed,int amout)根据日历的规则,将指定时间量添加或减去给定的日历字段

public final void set(int year,int mouth,int date)设置当前日历的年月日​​​​​​​

​​​​​​​Calendar字段汇总 JDK11

变量和类型字段描述
static intALL_STYLES

getDisplayNames的样式说明符,指示所有样式中的名称,例如“January”和“Jan”。

static intAM

AM_PM字段的值,表示从午夜到正午之前的一天的时段。

static intAM_PM

get和 set字段编号表示 HOUR是在中午之前还是之后。

static intAPRIL

MONTH字段的值,表示格里高利和朱利安日历中一年中的第四个月。

protected booleanareFieldsSet

如果 fields[]与当前设置的时间同步, fields[] True。

static intAUGUST

MONTH字段的值,表示格里高利和朱利安日历中一年中的第八个月。

static intDATE

get和 set字段编号表示当月的日期。

static intDAY_OF_MONTH

get和 set字段编号表示当月的日期。

static intDAY_OF_WEEK

字段编号为 get和 set表示星期几。

static intDAY_OF_WEEK_IN_MONTH

get和 set字段编号,表示当前月份中某一天的序号。

static intDAY_OF_YEAR

get和 set字段编号表示当年的日期编号。

static intDECEMBER

MONTH字段的值,表示格里高利和朱利安日历中的一年中的第十二个月。

static intDST_OFFSET

get和 set字段编号,指示夏令时偏移量(以毫秒为单位)。

static intERA

get和 set字段编号表示时代,例如Julian日历中的AD或BC。

static intFEBRUARY

MONTH字段的值,表示格里高利和朱利安日历中一年中的第二个月。

static intFIELD_COUNT

get和 set识别的不同字段的数量。

protected int[]字段

此日历的当前设置时间的日历字段值。

static intFRIDAY

DAY_OF_WEEK字段的值表示星期五。

static intHOUR

get和 set字段编号表示上午或下午的小时。

static intHOUR_OF_DAY

get和 set字段编号表示当天的小时。

protected boolean[]isSet

用于指示是否设置了日历的指定日历字段的标志。

protected booleanisTimeSet

如果那么 time的值有效 time真。

static intJANUARY

MONTH字段的值,表示Gregorian和Julian日历中一年中的第一个月。

static intJULY

MONTH字段的值,表示格里高利和朱利安日历中一年中的第七个月。

static intJUNE

MONTH字段的值,表示格里高利和朱利安日历中的第六个月。

static intLONG

getDisplayName和 getDisplayNames的样式说明  ,相当于 LONG_FORMAT 。

static intLONG_FORMAT

getDisplayName和 getDisplayNames的样式说明  ,指示用于格式的长名称。

static intLONG_STANDALONE

getDisplayName和 getDisplayNames的样式说明  ,表示独立使用的长名称,例如月份名称作为日历标题。

static intMARCH

MONTH字段的值,表示格里高利和朱利安日历中一年中的第三个月。

static intMAY

MONTH字段的值,表示Gregorian和Julian日历中一年中的第五个月。

static intMILLISECOND

get和 set字段编号表示秒内的毫秒数。

static intMINUTE

get和 set字段编号表示小时内的分钟。

static intMONDAY

DAY_OF_WEEK字段的值表示星期一。

static intMONTH

get和 set字段编号表示月份。

static intNARROW_FORMAT

getDisplayName和 getDisplayNames的样式说明  ,指示用于格式的窄名称。

static intNARROW_STANDALONE

getDisplayName和 getDisplayNames的样式说明  , 独立指示窄名称。

static intNOVEMBER

MONTH字段的值,表示格里高利和朱利安日历中一年中的第11个月。

static intOCTOBER

MONTH字段的值,表示格里高利和朱利安日历中一年中的第十个月。

static intPM

AM_PM字段的值,表示从中午到午夜之前的一天的时段。

static intSATURDAY

表示星期六的 DAY_OF_WEEK字段的值。

static intSECOND

get和 set字段编号表示分钟内的第二个。

static intSEPTEMBER

MONTH字段的值,表示格里高利和朱利安日历中一年中的第九个月。

static intSHORT

getDisplayName和 getDisplayNames的样式说明  ,相当于 SHORT_FORMAT 。

static intSHORT_FORMAT

getDisplayName和 getDisplayNames的样式说明  ,指示用于格式的短名称。

static intSHORT_STANDALONE

getDisplayName和 getDisplayNames的样式说明  ,指示独立使用的短名称,例如月份缩写作为日历标题。

static intSUNDAY

表示星期日的 DAY_OF_WEEK字段的值。

static intTHURSDAY

DAY_OF_WEEK字段的值表示星期四。

protected longtime

此日历的当前设置时间,以1970年1月1日格林威治标准时间0:00:00之后的毫秒数表示。

static intTUESDAY

表示星期二的 DAY_OF_WEEK字段的值。

static intUNDECIMBER

MONTH字段的值,表示一年中的第13个月。

static intWEDNESDAY

DAY_OF_WEEK字段的值表示星期三。

static intWEEK_OF_MONTH

get和 set字段编号, get set的周数。

static intWEEK_OF_YEAR

get和 set字段编号表示当前年份的周数。

static intYEAR

字段编号为 get和 set表示年份。

static intZONE_OFFSET

get和 set字段编号,表示与GMT的原始偏移(以毫秒为单位)。

 


实例如下

package API;

import java.util.Calendar;

public class Cclender {

	public static void main(String[] args) {
		
		Calendar c=Calendar.getInstance();
		System.out.println(c.get(Calendar.YEAR)+" "+c.get(Calendar.MONTH)+" "+c.get(Calendar.DATE));
		//2022 2 30
		c.add(Calendar.YEAR, -1);
		System.out.println(c.get(Calendar.YEAR)+" "+c.get(Calendar.MONTH)+" "+c.get(Calendar.DATE));
		//2021 2 30
		c.set(2003, 03,28);
		System.out.println(c.get(Calendar.YEAR)+" "+c.get(Calendar.MONTH)+" "+c.get(Calendar.DATE));
		//2003 3 28

	}

}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

老坛酸菜吃鸭子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值