日期操作类
(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 指示所有风格名称的 getDisplayNames 的风格说明符,比如 "January" 和 "Jan"。 |
static int |
APRIL 指示在格里高利历和罗马儒略历中一年中第四个月的 MONTH 字段值。 |
protected boolean |
areFieldsSet 如果 fields[] 与当前的设置时间同步,则返回 true。 |
static int |
DAY_OF_MONTH get 和 set 的字段数字,指示一个月中的某天。 |
static int |
DAY_OF_WEEK get 和 set 的字段数字,指示一个星期中的某天。 |
static int |
DECEMBER 指示在格里高利历和罗马儒略历中一年中第十二个月的 MONTH 字段值。 |
static int |
DST_OFFSET get 和 set 的字段数字,以毫秒为单位指示夏令时的偏移量。 |
static int |
DAY_OF_WEEK_IN_MONTH get 和 set 的字段数字,指示当前月中的第几个星期。 |
static int |
DAY_OF_YEAR get 和 set 的字段数字,指示当前年中的天数。 |
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 通知是否设置了该日历某一指定日历字段的标志。 |
static int |
LONG 指示长名称的 getDisplayName 和 getDisplayNames 的风格说明符,比如 "January"。 |
static int |
MILLISECOND get 和 set 的字段数字,指示一秒中的毫秒。 |
static int |
MINUTE get 和 set 的字段数字,指示一小时中的分钟。 |
static int |
MONDAY 指示 Monday 的 DAY_OF_WEEK 字段值。 |
static int |
MONTH 指示月份的 get 和 set 的字段数字。 |
static int |
PM 指示从中午到午夜之前这段时间的 AM_PM 字段值。 |
static int |
SATURDAY 指示 Saturday 的 DAY_OF_WEEK 字段值。 |
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 的大致偏移量。 |