23、JAVA进阶——日期操作类

作者简介:热爱国学的Java后端开发者,修心和技术同步精进。

??个人主页:乐趣国学的博客

??个人信条:不迁怒,不贰过。小知识,大智慧。

??当前专栏:JAVA开发者成长之路

特色专栏:国学周更-心性养成之路

??本文内容:JAVA进阶——日期操作类

更多内容点击??

JAVA进阶——实体类应用

JAVA进阶——集合(2)

目录

日期操作类

1、Date类

2、DateFormat类

3、SimpleDateFormat类

4、Calendar类


日期操作类

(1)java.util包也是Java内置的一个工具包,它包含了集合框架、日期和时间、随机数生成器等各种实用工具类。

(2)java.util包不会默认导入,如果要使用该包中的类,则必须在程序的开始部分进行手工导入。

(3)java.util包中提供的和日期相关的类常见有:

DateCalendarDateFormatSimpleDateFormat

(4)在JDK 1.1之间,Date类允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。不过,这些函数的API不易于实现国际化。从JDK 1.1开始,使用Calendar类实现日趋和时间字段之间的转化,使用DataFormat类来格式化和解析日期字符串。

1、Date类

Date类对象用来表示日期和时间,该类提供了一系列操作日期和时间各组成部分的方法。Date类中使用最多的是获取系统当前的日期和时间。

举例:Date date = new Date();这句代码是使用系统当前时间创建日期对象。

2、DateFormat类

DateFormat类用来格式化日期和时间,它在java.text包下,是一个抽象类,提供了多种格式化和解析时间的方法。

格式化是将日期转换成文本,解析是将文本转换成日期格式。

3、SimpleDateFormat类

SimpleDateFormat类是DateFormat类的子类。

SimpleDateFormat类是一个以语言环境有关的方式格式化和解析日期的具体类,如“yyyy-MM-dd HH:mm:ss”就是指定的一种日期和时间格式。

例子:利用Date类和SimpleDateFormat类实现“2022年09月30日 09:20:42 星期五”的输出。

public class DateDemo01 {
	public static void main(String[] args) {
		// 创建Date类对象
		Date date = new Date();
		// System.out.println(date);

		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss E D");
		String str = sdf.format(date);
		System.out.println("现在是:" + str);
	}
}

4、Calendar类

Calendar类也是用老操作日期和时间的类,它可以看作是Date类的一个增强版。Calendar类提供了一组方法,允许把一个以毫秒为单位的时间转换成年、月、日、小时、分、秒。

可以把Calendar类当做是万年历,默认显示的是当前时间,当然也可以查看其他时间。

Calendar类是抽象类,可以通过静态方法getInstance()获得Calendar类的对象,其实这个获得的对象是它的子类的对象。

Calendar类提供一些方法和静态字段来操作日历,常用字段:

–>int get(int field):返回给定日历字段的值。

–>YEAR:指示年。

–>MONTH:指示月。

–>DAY_OF_MONTH:指示一个月中的某天。

–>DAY_OF_WEEK:指示一个星期中的某天。

例子:使用Calendar类实现:“2022年9月30日,9点25分29秒,星期五”格式的输出。

	public static void main(String[] args) {
		// 直接创建一个Calendar类对象是创建不了的,因为Calendar类是一个抽象类
		Calendar cal = Calendar.getInstance();

		// 获取年
		int year = cal.get(Calendar.YEAR);
		// 获取月
		int month = cal.get(Calendar.MONTH);
		// 获取日
		int day = cal.get(Calendar.DAY_OF_MONTH);

		// 获取时分秒
		int hour = cal.get(Calendar.HOUR_OF_DAY);
		int minute = cal.get(Calendar.MINUTE);
		int second = cal.get(Calendar.SECOND);

		// 获取星期
		int week = cal.get(Calendar.DAY_OF_WEEK);

		String xingQi = null;

		switch (week) {
		case 1:
			xingQi = "星期日";
			break;
		case 2:
			xingQi = "星期一";
			break;
		case 3:
			xingQi = "星期二";
			break;
		case 4:
			xingQi = "星期三";
			break;
		case 5:
			xingQi = "星期四";
			break;
		case 6:
			xingQi = "星期五";
			break;
		case 7:
			xingQi = "星期六";
			break;
		}

		String[] weeks = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };

		System.out.println("现在是:" + year + "年" + (month + 1) + "月" + day + "日,"
				+ hour + "点" + minute + "分" + second + "秒," + weeks[week - 1]);

		System.out.println("今天是这一年中的第" + cal.get(Calendar.DAY_OF_YEAR) + "天");
		System.out.println("这个星期是这一年的第" + cal.get(Calendar.WEEK_OF_YEAR)
				+ "个星期");

	}

Calendar类——字段摘要

static?int

**[ALL_STYLES](../../java/util/Calendar.html#ALL_STYLES)**
指示所有风格名称的 [这里是代码005] 的风格说明符,比如 “January” 和 “Jan”。

static?int

**[AM](../../java/util/Calendar.html#AM)**
指示从午夜到中午之前这段时间的 [这里是代码008] 字段值。

static?int

**[AM_PM](../../java/util/Calendar.html#AM_PM)**
getset 的字段数字,指示 HOUR 是在中午之前还是在中午之后。

static?int

**[APRIL](../../java/util/Calendar.html#APRIL)**
指示在格里高利历和罗马儒略历中一年中第四个月的 [这里是代码016] 字段值。

protected ?boolean

**[areFieldsSet](../../java/util/Calendar.html#areFieldsSet)**
如果 fields[] 与当前的设置时间同步,则返回 true。

static?int

**[AUGUST](../../java/util/Calendar.html#AUGUST)**
指示在格里高利历和罗马儒略历中一年中第八个月的 [这里是代码022] 字段值。

static?int

**[DATE](../../java/util/Calendar.html#DATE)**
getset 的字段数字,指示一个月中的某天。

static?int

**[DAY_OF_MONTH](../../java/util/Calendar.html#DAY_OF_MONTH)**
getset 的字段数字,指示一个月中的某天。

static?int

**[DAY_OF_WEEK](../../java/util/Calendar.html#DAY_OF_WEEK)**
getset 的字段数字,指示一个星期中的某天。

static?int

**[DAY_OF_WEEK_IN_MONTH](../../java/util/Calendar.html#DAY_OF_WEEK_IN_MONTH)**
getset 的字段数字,指示当前月中的第几个星期。

static?int

**[DAY_OF_YEAR](../../java/util/Calendar.html#DAY_OF_YEAR)**
getset 的字段数字,指示当前年中的天数。

static?int

**[DECEMBER](../../java/util/Calendar.html#DECEMBER)**
指示在格里高利历和罗马儒略历中一年中第十二个月的 [这里是代码045] 字段值。

static?int

**[DST_OFFSET](../../java/util/Calendar.html#DST_OFFSET)**
getset 的字段数字,以毫秒为单位指示夏令时的偏移量。

static?int

**[ERA](../../java/util/Calendar.html#ERA)**
指示年代的 getset 的字段数字,比如罗马儒略历中的 AD 或 BC。

static?int

**[FEBRUARY](../../java/util/Calendar.html#FEBRUARY)**
指示在格里高利历和罗马儒略历中一年中第二个月的 [这里是代码056] 字段值。

static?int

**[FIELD_COUNT](../../java/util/Calendar.html#FIELD_COUNT)**
getset 可识别的不同字段的数量。

protected ?int[]

**[fields](../../java/util/Calendar.html#fields)**
此日历当前设置时间的日历字段值。

static?int

**[FRIDAY](../../java/util/Calendar.html#FRIDAY)**
指示 Friday 的 [这里是代码065] 字段值。

static?int

**[HOUR](../../java/util/Calendar.html#HOUR)**
getset 的字段数字,指示上午或下午的小时。

static?int

**[HOUR_OF_DAY](../../java/util/Calendar.html#HOUR_OF_DAY)**
getset 的字段数字,指示一天中的小时。

protected ?boolean[]

**[isSet](../../java/util/Calendar.html#isSet)**
通知是否设置了该日历某一指定日历字段的标志。

protected ?boolean

**[isTimeSet](../../java/util/Calendar.html#isTimeSet)**
如果 time 值是一个有效值,则返回 true。

static?int

**[JANUARY](../../java/util/Calendar.html#JANUARY)**
指示在格里高利历和罗马儒略历中一年中第一个月的 [这里是代码081] 字段值。

static?int

**[JULY](../../java/util/Calendar.html#JULY)**
指示在格里高利历和罗马儒略历中一年中第七个月的 [这里是代码084] 字段值。

static?int

**[JUNE](../../java/util/Calendar.html#JUNE)**
指示在格里高利历和罗马儒略历中一年中第六个月的 [这里是代码087] 字段值。

static?int

**[LONG](../../java/util/Calendar.html#LONG)**
指示长名称的 [这里是代码090][这里是代码091] 的风格说明符,比如 “January”。

static?int

**[MARCH](../../java/util/Calendar.html#MARCH)**
指示在格里高利历和罗马儒略历中一年中第三个月的 [这里是代码094] 字段值。

static?int

**[MAY](../../java/util/Calendar.html#MAY)**
指示在格里高利历和罗马儒略历中一年中第五个月的 [这里是代码097] 字段值。

static?int

**[MILLISECOND](../../java/util/Calendar.html#MILLISECOND)**
getset 的字段数字,指示一秒中的毫秒。

static?int

**[MINUTE](../../java/util/Calendar.html#MINUTE)**
getset 的字段数字,指示一小时中的分钟。

static?int

**[MONDAY](../../java/util/Calendar.html#MONDAY)**
指示 Monday 的 [这里是代码108] 字段值。

static?int

**[MONTH](../../java/util/Calendar.html#MONTH)**
指示月份的 getset 的字段数字。

static?int

**[NOVEMBER](../../java/util/Calendar.html#NOVEMBER)**
指示在格里高利历和罗马儒略历中一年中第十一个月的 [这里是代码115] 字段值。

static?int

**[OCTOBER](../../java/util/Calendar.html#OCTOBER)**
指示在格里高利历和罗马儒略历中一年中第十个月的 [这里是代码118] 字段值。

static?int

**[PM](../../java/util/Calendar.html#PM)**
指示从中午到午夜之前这段时间的 [这里是代码121] 字段值。

static?int

**[SATURDAY](../../java/util/Calendar.html#SATURDAY)**
指示 Saturday 的 [这里是代码124] 字段值。

static?int

**[SECOND](../../java/util/Calendar.html#SECOND)**
getset 的字段数字,指示一分钟中的秒。

static?int

**[SEPTEMBER](../../java/util/Calendar.html#SEPTEMBER)**
指示在格里高利历和罗马儒略历中一年中第九个月的 [这里是代码131] 字段值。

static?int

**[SHORT](../../java/util/Calendar.html#SHORT)**
指示短名称的 [这里是代码134][这里是代码135] 的风格说明符,比如 “Jan”。

static?int

**[SUNDAY](../../java/util/Calendar.html#SUNDAY)**
指示 Sunday 的 [这里是代码138] 字段值。

static?int

**[THURSDAY](../../java/util/Calendar.html#THURSDAY)**
指示 Thursday 的 [这里是代码141] 字段值。

protected ?long

**[time](../../java/util/Calendar.html#time)**
日历的当前设置时间,以毫秒为单位,表示自格林威治标准时间 1970 年 1月 1 日 0:00:00 后经过的时间。

static?int

**[TUESDAY](../../java/util/Calendar.html#TUESDAY)**
指示 Tuesday 的 [这里是代码146] 字段值。

static?int

**[UNDECIMBER](../../java/util/Calendar.html#UNDECIMBER)**
指示一年中第十三个月的 [这里是代码149] 字段值。

static?int

**[WEDNESDAY](../../java/util/Calendar.html#WEDNESDAY)**
指示 Wednesday 的 [这里是代码152] 字段值。

static?int

**[WEEK_OF_MONTH](../../java/util/Calendar.html#WEEK_OF_MONTH)**
getset 的字段数字,指示当前月中的星期数。

static?int

**[WEEK_OF_YEAR](../../java/util/Calendar.html#WEEK_OF_YEAR)**
getset 的字段数字,指示当前年中的星期数。

static?int

**[YEAR](../../java/util/Calendar.html#YEAR)**
指示年的 getset 的字段数字。

static?int

**[ZONE_OFFSET](../../java/util/Calendar.html#ZONE_OFFSET)**
getset 的字段数字,以毫秒为单位指示距 GMT 的大致偏移量。

码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识,请关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值