✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。
个人主页:乐趣国学的博客
个人信条:不迁怒,不贰过。小知识,大智慧。
当前专栏:JAVA开发者成长之路
✨特色专栏:国学周更-心性养成之路
本文内容:JAVA进阶——日期操作类
更多内容点击
JAVA进阶——实体类应用
JAVA进阶——集合(2)
1、Date类
2、DateFormat类
3、SimpleDateFormat类
4、Calendar类
(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类来格式化和解析日期字符串。
Date类对象用来表示日期和时间,该类提供了一系列操作日期和时间各组成部分的方法。Date类中使用最多的是获取系统当前的日期和时间。
举例:Date date = new Date();这句代码是使用系统当前时间创建日期对象。
DateFormat类用来格式化日期和时间,它在java.text包下,是一个抽象类,提供了多种格式化和解析时间的方法。
格式化是将日期转换成文本,解析是将文本转换成日期格式。
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);
}
}
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 指示所有风格名称的 getDisplayNames 的风格说明符,比如 "January" 和 "Jan"。 |
static int |
AM 指示从午夜到中午之前这段时间的 AM_PM 字段值。 |
static int |
AM_PM get 和 set 的字段数字,指示 HOUR 是在中午之前还是在中午之后。 |
static int |
APRIL 指示在格里高利历和罗马儒略历中一年中第四个月的 MONTH 字段值。 |
protected boolean |
areFieldsSet 如果 fields[] 与当前的设置时间同步,则返回 true。 |
static int |
AUGUST 指示在格里高利历和罗马儒略历中一年中第八个月的 MONTH 字段值。 |
static int |
DATE get 和 set 的字段数字,指示一个月中的某天。 |
static int |
DAY_OF_MONTH get 和 set 的字段数字,指示一个月中的某天。 |
static int |
DAY_OF_WEEK get 和 set 的字段数字,指示一个星期中的某天。 |
static int |
DAY_OF_WEEK_IN_MONTH get 和 set 的字段数字,指示当前月中的第几个星期。 |
static int |
DAY_OF_YEAR get 和 set 的字段数字,指示当前年中的天数。 |
static int |
DECEMBER 指示在格里高利历和罗马儒略历中一年中第十二个月的 MONTH 字段值。 |
static int |
DST_OFFSET get 和 set 的字段数字,以毫秒为单位指示夏令时的偏移量。 |
static int |
ERA 指示年代的 get 和 set 的字段数字,比如罗马儒略历中的 AD 或 BC。 |
static int |
FEBRUARY 指示在格里高利历和罗马儒略历中一年中第二个月的 MONTH 字段值。 |
static int |
FIELD_COUNT get 和 set 可识别的不同字段的数量。 |
protected int[] |
fields 此日历当前设置时间的日历字段值。 |
static int |
FRIDAY 指示 Friday 的 DAY_OF_WEEK 字段值。 |
static int |
HOUR get 和 set 的字段数字,指示上午或下午的小时。 |
static int |
HOUR_OF_DAY get 和 set 的字段数字,指示一天中的小时。 |
protected boolean[] |
isSet 通知是否设置了该日历某一指定日历字段的标志。 |
protected boolean |
isTimeSet 如果 time 值是一个有效值,则返回 true。 |
static int |
JANUARY 指示在格里高利历和罗马儒略历中一年中第一个月的 MONTH 字段值。 |
static int |
JULY 指示在格里高利历和罗马儒略历中一年中第七个月的 MONTH 字段值。 |
static int |
JUNE 指示在格里高利历和罗马儒略历中一年中第六个月的 MONTH 字段值。 |
static int |
LONG 指示长名称的 getDisplayName 和 getDisplayNames 的风格说明符,比如 "January"。 |
static int |
MARCH 指示在格里高利历和罗马儒略历中一年中第三个月的 MONTH 字段值。 |
static int |
MAY 指示在格里高利历和罗马儒略历中一年中第五个月的 MONTH 字段值。 |
static int |
MILLISECOND get 和 set 的字段数字,指示一秒中的毫秒。 |
static int |
MINUTE get 和 set 的字段数字,指示一小时中的分钟。 |
static int |
MONDAY 指示 Monday 的 DAY_OF_WEEK 字段值。 |
static int |
MONTH 指示月份的 get 和 set 的字段数字。 |
static int |
NOVEMBER 指示在格里高利历和罗马儒略历中一年中第十一个月的 MONTH 字段值。 |
static int |
OCTOBER 指示在格里高利历和罗马儒略历中一年中第十个月的 MONTH 字段值。 |
static int |
PM 指示从中午到午夜之前这段时间的 AM_PM 字段值。 |
static int |
SATURDAY 指示 Saturday 的 DAY_OF_WEEK 字段值。 |
static int |
SECOND get 和 set 的字段数字,指示一分钟中的秒。 |
static int |
SEPTEMBER 指示在格里高利历和罗马儒略历中一年中第九个月的 MONTH 字段值。 |
static int |
SHORT 指示短名称的 getDisplayName 和 getDisplayNames 的风格说明符,比如 "Jan"。 |
static int |
SUNDAY 指示 Sunday 的 DAY_OF_WEEK 字段值。 |
static int |
THURSDAY 指示 Thursday 的 DAY_OF_WEEK 字段值。 |
protected long |
time 日历的当前设置时间,以毫秒为单位,表示自格林威治标准时间 1970 年 1月 1 日 0:00:00 后经过的时间。 |
static int |
TUESDAY 指示 Tuesday 的 DAY_OF_WEEK 字段值。 |
static int |
UNDECIMBER 指示一年中第十三个月的 MONTH 字段值。 |
static int |
WEDNESDAY 指示 Wednesday 的 DAY_OF_WEEK 字段值。 |
static int |
WEEK_OF_MONTH get 和 set 的字段数字,指示当前月中的星期数。 |
static int |
WEEK_OF_YEAR get 和 set 的字段数字,指示当前年中的星期数。 |
static int |
YEAR 指示年的 get 和 set 的字段数字。 |
static int |
ZONE_OFFSET get 和 set 的字段数字,以毫秒为单位指示距 GMT 的大致偏移量。 |
码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识,请关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。