Calendar类---日历
public abstract class Calendar
extends Object
implements Serializable, Cloneable, Comparable<Calendar>
Calendar类是一个抽象类,不能通过new+构造方法的方式创建对象
构造方法
protected Calendar()
protected Calendar(TimeZone zone, Locale aLocale)
构造方法是protected修饰的,其他的非子类中不能通过new+构造方法的方式创建对象
静态方法【类名】,返回值是Calendar类对象
static Calendar getInstance()
得到对象的方式
Calendar calendar=Calendar.getInstance();
Calendar的常用操作
1.查看日期
常用字段
static int YEAR 表示年份。
static int MONTH 表示月份。
static int DAY_OF_MONTH 表示本月的日期
static int DAY_OF_YEAR 本年度的日数
static int DAY_OF_WEEK 表示一周中的日期
static int WEEK_OF_YEAR 本年度的周数
int get(int field)查询指定的日期时间
2.选定日期,未来的日期
void set(int year, int month, int date, int hourOfDay, int minute, int second)
void set(int year, int month, int date)
注意:set完成日期以后再一次使用日历对象得到的是设置后的相关日期信息。
package com.wangxing.calendar.test1;
import java.util.Calendar;
public class TestMain {
public static void main(String[] args) {
//1.查看日期
//常用字段
/*
static int YEAR 表示年份。
static int MONTH 表示月份。
static int DAY_OF_MONTH 表示本月的日期
static int DAY_OF_YEAR 本年度的日数
static int DAY_OF_WEEK 表示一周中的日期
static int WEEK_OF_YEAR 本年度的周数
*/
Calendar calendar=Calendar.getInstance();
//int get(int field)查询指定的日期时间
int year=calendar.get(Calendar.YEAR);
System.out.println("year=="+year);
//月份不是从1开始数,是从0开始数,往往需要加1
int month=calendar.get(Calendar.MONTH);
System.out.println("month=="+(month+1));
int dayofmonth=calendar.get(Calendar.DAY_OF_MONTH);
System.out.println("dayofmonth=="+dayofmonth);
//星期是从星期日开始数,往往需要减1
int dayofweek=calendar.get(Calendar.DAY_OF_WEEK);
System.out.println("dayofweek=="+(dayofweek-1));
int yearofweek=calendar.get(Calendar.WEEK_OF_YEAR);
System.out.println("yearofweek=="+yearofweek);
int dayofyear=calendar.get(Calendar.DAY_OF_YEAR);
System.out.println("dayofyear=="+dayofyear);
//选定日期,未来的日期
//void set(int year, int month, int date)
calendar.set(2028, 7, 1);
int year1=calendar.get(Calendar.YEAR);
System.out.println("year1=="+year1);
//月份不是从1开始数,是从0开始数,往往需要加1
int month1=calendar.get(Calendar.MONTH);
System.out.println("month1=="+month1);
int dayofmonth1=calendar.get(Calendar.DAY_OF_MONTH);
System.out.println("dayofmonth1=="+dayofmonth1);
int dayofweek1=calendar.get(Calendar.DAY_OF_WEEK);
System.out.println("dayofweek1=="+(dayofweek1-1));
int yearofweek1=calendar.get(Calendar.WEEK_OF_YEAR);
System.out.println("yearofweek1=="+yearofweek1);
int dayofyear1=calendar.get(Calendar.DAY_OF_YEAR);
System.out.println("dayofyear1=="+dayofyear1);
}
}
java.util.Date类
public class Date
extends Object
implements Serializable, Cloneable, Comparable<Date>
Date类表示特定的时间【日期和时间】
Date类的构造方法
Date()
Date(long date)
Date类的实例方法
boolean after(Date when) 测试此日期是否在指定日期之后。
boolean before(Date when) 测试此日期是否在指定日期之前。
boolean equals(Object obj) 比较两个日期来平等。【被重写过】
long getTime() 返回自1970年1月1日以来,到当前时间的毫秒数。
void setTime(long time)设置此 Date对象以表示1970年1月1日00:00:00 GMT后设置的毫秒数的时间点String toString() 将此 Date对象转换为 String
package com.wangxing.test1;
import java.util.Date;
public class TestMain {
public static void main(String[] args) {
//Date类的构造方法
//Date()得到当前系统时间
//Date date1=new Date();
//Fri Jul 01 15:55:24 GMT+08:00 2022
//System.out.println(date1);
//Date(long date)得到从“时代”的标准基准时间向未来推算指定的毫秒数所得的时间日期
//1970年1月1日00:00:00 GMT【“时代”的标准基准时间】
//Date date2=new Date(3000);
//1000---Thu Jan 01 08:00:01 GMT+08:00 1970
//2000---Thu Jan 01 08:00:02 GMT+08:00 1970
//3000---Thu Jan 01 08:00:03 GMT+08:00 1970
//System.out.println(date2);
/*
Date类的实例方法
boolean after(Date when) 测试此日期是否在指定日期之后。
boolean before(Date when) 测试此日期是否在指定日期之前。
boolean equals(Object obj) 比较两个日期来平等。【被重写过】
long getTime() 返回自1970年1月1日以来,到当前时间的毫秒数。
void setTime(long time)设置此 Date对象以表示1970年1月1日00:00:00 GMT后设置的毫秒数的时间点
String toString() 将此 Date对象转换为 String
*/
//boolean after(Date when) 测试此日期是否在指定日期之后。
Date date1=new Date(); //Fri Jul 01 15:55:24 GMT+08:00 2022
System.out.println(date1);
Date date2=new Date(3000); //Thu Jan 01 08:00:03 GMT+08:00 1970
System.out.println(date2);
if(date1.after(date2)){
System.out.println("date1在date2之后");
}else{
System.out.println("date1在date2之前");
}
//boolean before(Date when) 测试此日期是否在指定日期之前。
if(date1.before(date2)){
System.out.println("date1在date2之前");
}else{
System.out.println("date1在date2之后");
}
//long getTime() 返回自1970年1月1日以来,到当前时间的毫秒数。
long haomiaoshu=date1.getTime();
System.out.println("haomiaoshu==="+haomiaoshu);
Date date3=new Date(haomiaoshu);
System.out.println(date3);
//void setTime(long time)设置此 Date对象以表示1970年1月1日00:00:00 GMT后设置的毫秒数的时间点
Date date4=new Date();
date4.setTime(3000);
System.out.println(date4);
}
}
SimpleDateFormat类
public class SimpleDateFormat
extends DateFormat
SimpleDateFormat类是用来格式化和解析日期时间
SimpleDateFormat类
SimpleDateFormat(String pattern) 得到一个有格式的SimpleDateFormat类对象
设置时间日期格式的字母
yyyy----Year
M-------Month in year
d-------Day in month
H-------Hour in day (0-23)
m-------Minute in hour
s-------Second in minute
E-------Day name in week
设置时间日期格式
"yyyy-MM-dd" 2022-07-01
"yyyy/MM/dd HH:mm:ss" 2022-07-01 16:27:30
"yyyy年MM月dd日 HH:mm" 2022年07月01日 16:27
String format(Date date)将日期格式化成日期/时间字符串。
Date parse(String source)从给定字符串的开始解析文本以生成日期Date对象
package com.wangxing.test1;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestMain {
public static void main(String[] args)throws Exception {
/*
String pattern="yyyy-MM-dd HH:mm:ss E";
SimpleDateFormat sdf=new SimpleDateFormat(pattern);
Date date1=new Date();
//Fri Jul 01 15:55:24 GMT+08:00 2022
String newdate=sdf.format(date1);
System.out.println(newdate);
//2022-07-01 16:39:49 星期五
*/
String pattern="yyyy-MM-dd HH时mm分ss秒";
String strdate="2028-07-02 13时12分14秒";
SimpleDateFormat sdf=new SimpleDateFormat(pattern);
Date date=sdf.parse(strdate);
System.out.println(date);
//Sun Jul 02 13:12:14 GMT+08:00 2028
}
}
Calendar类中的getTime()方法可以将Calendar类设置的日期转换成Date类对象
Calendar calendar=Calendar.getInstance();
calendar.set(2022, 8-1, 2, 12, 13, 14);
Date date=calendar.getTime();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH时mm分ss秒");
String strtime=sdf.format(date);
System.out.println(strtime);