作者简介:热爱国学的Java后端开发者,修心和技术同步精进。
??个人主页:乐趣国学的博客
??个人信条:不迁怒,不贰过。小知识,大智慧。
??当前专栏:JAVA开发者成长之路
特色专栏:国学周更-心性养成之路
??本文内容:JAVA进阶——日期操作类
更多内容点击??
目录
日期操作类
日期操作类
(1)java.util包也是Java内置的一个工具包,它包含了集合框架、日期和时间、随机数生成器等各种实用工具类。
(2)java.util包不会默认导入,如果要使用该包中的类,则必须在程序的开始部分进行手工导入。
(3)java.util包中提供的和日期相关的类常见有:
Date类Calendar类DateFormat类SimpleDateFormat类
(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)**
get
和 set
的字段数字,指示 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)**
get
和 set
的字段数字,指示一个月中的某天。
static?int
**[DAY_OF_MONTH](../../java/util/Calendar.html#DAY_OF_MONTH)**
get
和 set
的字段数字,指示一个月中的某天。
static?int
**[DAY_OF_WEEK](../../java/util/Calendar.html#DAY_OF_WEEK)**
get
和 set
的字段数字,指示一个星期中的某天。
static?int
**[DAY_OF_WEEK_IN_MONTH](../../java/util/Calendar.html#DAY_OF_WEEK_IN_MONTH)**
get
和 set
的字段数字,指示当前月中的第几个星期。
static?int
**[DAY_OF_YEAR](../../java/util/Calendar.html#DAY_OF_YEAR)**
get
和 set
的字段数字,指示当前年中的天数。
static?int
**[DECEMBER](../../java/util/Calendar.html#DECEMBER)**
指示在格里高利历和罗马儒略历中一年中第十二个月的 [这里是代码045] 字段值。
static?int
**[DST_OFFSET](../../java/util/Calendar.html#DST_OFFSET)**
get
和 set
的字段数字,以毫秒为单位指示夏令时的偏移量。
static?int
**[ERA](../../java/util/Calendar.html#ERA)**
指示年代的 get
和 set
的字段数字,比如罗马儒略历中的 AD 或 BC。
static?int
**[FEBRUARY](../../java/util/Calendar.html#FEBRUARY)**
指示在格里高利历和罗马儒略历中一年中第二个月的 [这里是代码056] 字段值。
static?int
**[FIELD_COUNT](../../java/util/Calendar.html#FIELD_COUNT)**
get
和 set
可识别的不同字段的数量。
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)**
get
和 set
的字段数字,指示上午或下午的小时。
static?int
**[HOUR_OF_DAY](../../java/util/Calendar.html#HOUR_OF_DAY)**
get
和 set
的字段数字,指示一天中的小时。
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)**
get
和 set
的字段数字,指示一秒中的毫秒。
static?int
**[MINUTE](../../java/util/Calendar.html#MINUTE)**
get
和 set
的字段数字,指示一小时中的分钟。
static?int
**[MONDAY](../../java/util/Calendar.html#MONDAY)**
指示 Monday 的 [这里是代码108] 字段值。
static?int
**[MONTH](../../java/util/Calendar.html#MONTH)**
指示月份的 get
和 set
的字段数字。
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)**
get
和 set
的字段数字,指示一分钟中的秒。
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)**
get
和 set
的字段数字,指示当前月中的星期数。
static?int
**[WEEK_OF_YEAR](../../java/util/Calendar.html#WEEK_OF_YEAR)**
get
和 set
的字段数字,指示当前年中的星期数。
static?int
**[YEAR](../../java/util/Calendar.html#YEAR)**
指示年的 get
和 set
的字段数字。
static?int
**[ZONE_OFFSET](../../java/util/Calendar.html#ZONE_OFFSET)**
get
和 set
的字段数字,以毫秒为单位指示距 GMT 的大致偏移量。
码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识,请关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。