目录
一、日期操作类
二、Date类
1、Date类中的构造方法
2、获取系统当前时间
三、SimpleDateFormat类
1、SimpleDateFormat类中的构造方法
2、format(Date date,StringBuffer toAppendTo,FieldPosition pos)方法
四、Calendar类
1、Calendar类中的构造方法
2、Calendar类中的字段名
3、Calendar类中的常用方法及代码
3.1 getInstance()方法
3.2 get()方法
4、参考代码
一、日期操作类
(1)java.util包中提供的和日期相关的类常见有:
Date类 Calendar类 DateFormat类 SimpleDateFormat类
(2)在JDK 1.1之间,Date类允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。不过,这些函数的API不易于实现国际化。从JDK 1.1开始,使用Calendar类实现日趋和时间字段之间的转化,使用DataFormat类来格式化和解析日期字符串。
二、Date类
java.util.Date类:表示日期和时间
提供操作日期和时间各组成部分的方法,类
Date
表示特定的瞬间,精确到毫秒
1、Date类中的构造方法
只需要看一下无参构造方法就行了,其他的已经过时了
2、获取系统当前时间
public static void main(String[] args) {
//创建Date类对象
Date date = new Date();
//获取系统当前时间
System.out.println("系统当前时间:"+date);
}
三、SimpleDateFormat类
(1)SimpleDateFormat类是java.text包中的类,是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
(2)SimpleDateFprmat类使得可以选择任何用户定义的日期-时间格式的模式。但是,仍然建议通过DateFormat中的getTimeInstance、getDateInstance或getDateTimeInstance来创建日期-时间格式器。每一个这样的类方法都能够返回一个以默认格式模式初始化的日期/时间格式器。可以根据需要使用applyPattern方法来修改格式模式。
1、SimpleDateFormat类中的构造方法
2、format(Date date,StringBuffer toAppendTo,FieldPosition pos)方法
将给定的Date格式化为日期/时间字符串,并将结果添加到给定的StringBuffer
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatDemo01 {
public static void main(String[] args) {
//创建Date类对象
Date date = new Date();
//创建SimpleDateFormat类对象,设置格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E 是今年的第D天");
String time1 = sdf.format(date);
System.out.println("现在的时间是:"+time1);
}
}
四、Calendar类
Calendar
类是一个抽象类,它为特定瞬间与一组诸如YEAR
、MONTH
、DAY_OF_MONTH
、HOUR
等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
1、Calendar类中的构造方法
2、Calendar类中的字段名
Calendar类中的字段都是静态的,可通过类名直接调用。
3、Calendar类中的常用方法及代码
Calendar类是一个抽象类,是不能创建对象的,
所以可以通过Calendar类中的getInstance()方法获取一个当前日历,把它赋值给一个Calendar类的引用,可通过引用变量调用get()方法获取日历中的字段值
3.1 getInstance()方法
使用默认时区和语言环境获取一个日历
public static void main(String[] args) {
//直接创建一个Calendar类对象是创建不了的,因为Calendar类是一个抽象类
//getInstance():使用默认时区和语言环境获得一个日历
Calendar cal = Calendar.getInstance();
System.out.println(cal);
}
控制台输出为:
java.util.GregorianCalendar[time=1670313949634,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=11,WEEK_OF_YEAR=50,WEEK_OF_MONTH=2,DAY_OF_MONTH=6,DAY_OF_YEAR=340,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=4,HOUR_OF_DAY=16,MINUTE=5,SECOND=49,MILLISECOND=634,ZONE_OFFSET=28800000,DST_OFFSET=0]
3.2 get()方法
返回日历给定字段的值
(1)获取年份
public static void main(String[] args) {
//通过getInstance日历
Calendar cal = Calendar.getInstance();
System.out.println(cal);
//get() 方法:返回日历中给定的字段值
//获取年份
int year = cal.get(Calendar.YEAR);
System.out.println(year);
}
(2) 获取月份
指示月份的
get
和set
的字段数字。这是一个特定于日历的值。在格里高利历和罗马儒略历中一年中的第一个月是JANUARY
,它为 0;最后一个月取决于一年中的月份数。所以我们要想获取当前的月份需要把获得的日历月份加1
public static void main(String[] args) {
//通过getInstance日历
Calendar cal = Calendar.getInstance();
System.out.println(cal);
//get() 方法:返回日历中给定的字段值
//获取月份
int month = cal.get(Calendar.MONTH)+1;
System.out.println(month);
}
(3) 获取日
public static void main(String[] args) {
//通过getInstance日历
Calendar cal = Calendar.getInstance();
System.out.println(cal);
//get() 方法:返回日历中给定的字段值
//获取日
int day1 = cal.get(Calendar.DAY_OF_MONTH);//本月的第几天
System.out.println(day1);
int day2 = cal.get(Calendar.DAY_OF_WEEK);//本周的第几天(周日是第一天,所以实际周几+1)
System.out.println(day2);
int day3 = cal.get(Calendar.DAY_OF_WEEK_IN_MONTH);//今天是本月的第几周
System.out.println(day3);
int day4 = cal.get(Calendar.DAY_OF_YEAR);//今天是今年的第多少天
System.out.println(day4);
}
(4) 获取时
public static void main(String[] args) {
//通过getInstance日历
Calendar cal = Calendar.getInstance();
System.out.println(cal);
//get() 方法:返回日历中给定的字段值
//获取时
int hour1 = cal.get(Calendar.HOUR);//十二小时制
System.out.println(hour1);
int hour2 = cal.get(Calendar.HOUR_OF_DAY);//现在是一天中的第几个小时(二十四小时制)
System.out.println(hour2);
}
(5)获取分
public static void main(String[] args) {
//通过getInstance日历
Calendar cal = Calendar.getInstance();
System.out.println(cal);
//get() 方法:返回日历中给定的字段值
//获取分
int minute = cal.get(Calendar.MINUTE);
System.out.println(minute);
}
(6)获取分
public static void main(String[] args) {
//通过getInstance日历
Calendar cal = Calendar.getInstance();
System.out.println(cal);
//get() 方法:返回日历中给定的字段值
//获取秒
int second = cal.get(Calendar.SECOND);
System.out.println(second);
}
(7)获取星期几的两种方法
系统默认每周是从周日开始的,周日为每周的第一天,Calendar.DAY_OF_WEEK返回的是本周的第几天,而我们通常表示为"星期二",是字符串类型,我们可以通过以下两种方法实现
第一种方法:switch选择结构
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
//switch分支结构实现输出星期几
int weekday = cal.get(Calendar.DAY_OF_WEEK);
String weekDay ="";
switch(weekday){
case 1:
weekDay = "星期日";
break;
case 2:
weekDay ="星期一";
break;
case 3:
weekDay = "星期二";
break;
case 4:
weekDay = "星期三";
break;
case 5:
weekDay = "星期四";
break;
case 6:
weekDay = "星期五";
break;
case 7:
weekDay = "星期六";
}
System.out.println("今天是:"+weekDay);
}
第二种方法:数组
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
//数组实现输出星期几
int weekday = cal.get(Calendar.DAY_OF_WEEK);
String[] weekDay = {"","星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
System.out.println("今天是:"+weekDay[weekday]);
}
4、参考代码
public static void main(String[] args) {
//通过getInstance日历
Calendar cal = Calendar.getInstance();
System.out.println(cal);
//get() 方法:返回日历中给定的字段值
//获取年份
int year = cal.get(Calendar.YEAR);
System.out.println(year);
//获取月份
int month = cal.get(Calendar.MONTH)+1;
System.out.println(month);
//获取日
int day1 = cal.get(Calendar.DAY_OF_MONTH);//本月的第几天
System.out.println(day1);
int day2 = cal.get(Calendar.DAY_OF_WEEK);//本周的第几天(周日是第一天,所以实际周几+1)
System.out.println(day2);
int day3 = cal.get(Calendar.DAY_OF_WEEK_IN_MONTH);//今天是本月的第几周
System.out.println(day3);
int day4 = cal.get(Calendar.DAY_OF_YEAR);//今天是今年的第多少天
System.out.println(day4);
//获取时
int hour1 = cal.get(Calendar.HOUR);//十二小时制
System.out.println(hour1);
int hour2 = cal.get(Calendar.HOUR_OF_DAY);//现在是一天中的第几个小时(二十四小时制)
System.out.println(hour2);
//获取分
int minute = cal.get(Calendar.MINUTE);
System.out.println(minute);
//获取秒
int second = cal.get(Calendar.SECOND);
System.out.println(second);
//获取星期几
int weekday = cal.get(Calendar.DAY_OF_WEEK);
System.out.println(weekday);
String weekDay ="";
switch(weekday){
case 1:
weekDay = "星期日";
break;
case 2:
weekDay ="星期一";
break;
case 3:
weekDay = "星期二";
break;
case 4:
weekDay = "星期三";
break;
case 5:
weekDay = "星期四";
break;
case 6:
weekDay = "星期五";
break;
case 7:
weekDay = "星期六";
}
System.out.println("现在是:"+year+"年"+month+"月"+day1+"日\t"+hour2+"点"+minute+"分"+second+"秒\t"+weekDay);
System.out.println("今天是今年的第"+day4+"天");
System.out.println("本周是今年的第"+cal.get(Calendar.WEEK_OF_YEAR)+"周");
}