日期时间类
1. Date类
1.1 实例化方法
- Date() 获取当前时间
- Date()带参数,参数有以下五种
new Date("month dd,yyyy hh:mm:ss");
new Date("month dd,yyyy");
new Date(yyyy,mth,dd,hh,mm,ss);
new Date(yyyy,mth,dd);
new Date(ms);
注意这里的参数都是从1970年一月一日零点开始的,参数代表的是加数
1.2 Date类方法
getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getFullYear() 从 Date 对象以四位数字返回年份。
getYear() 请使用 getFullYear() 方法代替。
getHours() 返回 Date 对象的小时 (0 ~ 23)。
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒数。
getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。
getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。
getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。
getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。
getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。
getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。
parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
setMonth() 设置 Date 对象中月份 (0 ~ 11)。
setFullYear() 设置 Date 对象中的年份(四位数字)。
setYear() 请使用 setFullYear() 方法代替。
setHours() 设置 Date 对象中的小时 (0 ~ 23)。
setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
setTime() 以毫秒设置 Date 对象。
setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。
setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。
setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。
setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
setUTCSeconds() 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。
toSource() 返回该对象的源代码。
toString() 把 Date 对象转换为字符串。(返回的也是毫秒数)
toTimeString() 把 Date 对象的时间部分转换为字符串。
toDateString() 把 Date 对象的日期部分转换为字符串。
toGMTString() 请使用 toUTCString() 方法代替。 1 3
toUTCString() 根据世界时,把 Date 对象转换为字符串。
toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。
toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。
UTC() 根据世界时返回 1997 年 1 月 1 日 到指定日期的毫秒数。
valueOf() 返回 Date 对象的原始值。
boolean after(Date date)若当调用此方法的Date对象在指定日期之后返回true,否则返回false。
boolean before(Date date) 若当调用此方法的Date对象在指定日期之前返回true,否则返回false。
Object clone( ) 返回此对象的副本。
int compareTo(Date date) 比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。
int compareTo(Object obj) 若obj是Date类型则操作等同于compareTo(Date) 。否则它抛出ClassCastException。
boolean equals(Object date) 当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。
long getTime( )返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
int hashCode( )返回此对象的哈希码值。
void setTime(long time)** 用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期。
String toString( ) 把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz:yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
1.3 代码示例
public static void main(String[] args) {
//实例化和toString方法,(实例化里边的参数是加数,从1970.1.1开始加)
Date date = new Date();
System.out.println(date.toString());
Date date1 = new Date(2022, 4, 19);//这里返回是1970.1.1加参数
System.out.println(date1.toString());
//gettime方法,返回的是毫秒数
long time = date.getTime();
long time1 = date.getTime();
System.out.println(time == time1);
//before,after,equals
boolean before = new Date(99, 1, 12).before(new Date(99, 1, 24));
System.out.println(before);
}
2. SimpleDateFormat
这个类是用来格式化时间的,相当于是一个工具,里面提供的方法也是为了让日期可以再字符串,Date,Canlendar之间相互转换
2.1 构造方法
SimpleDateFormat类可以自定义时间的形式
SimpleDateFormat sdf1=new SimpleDateFormat("yyyyMMdd");//显示20171027格式
SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd");//显示2017-10-27格式
SimpleDateFormat sdf3=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//显示2017-10-27 10:00:00格式
SimpleDateFormat sdf4=new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");//显示2017年10月27日10时00分00秒格式
2.2 时间模式字母的定义
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OwH1Bxfa-1650363384513)(C:\Users\10357\AppData\Roaming\Typora\typora-user-images\image-20220419164447079.png)]
2.3 方法
String format(Date date )方法将Date类转换成字符串,形式是创建对象的时候定义的那样
Date parse(String str)方法把字符串转换成Date类,但是这里要求字符串形式得符合形式,要么就捕获异常
3. Calendar(建议使用)
Date中很多方法都舍弃了,基本上用的都是Calendar类了
3.1 构造方法
由于Calendar类是一个抽象类,不能通过构造方法实例化,但是这个小东西留了一手,留了个getInstance方法可以返回对象(具体看3.2)
Calendar c = Calendar.getInstance();
3.2 拿到抽象类的对象时
方法一:
直接去找该抽象类的已实现的子类对象.
比如说现在我们所提到的 public abstract class Calendar
它就有已实现的子类GregorianCalendar,我们也是可以直接
Calendar rili = new GregorianCalendar();
这样我们就拿到了Calendar的对象.
方法二:
看该抽象类中是否有返回该方法实例的静态方法.
我们知道,不管这个类是否是抽象的,该类中的静态成员都是可以以 **“类.成员”**进行调用.(不用实例化该类的对象.)
而这正式另一种获取该类对象的方法,也就是该类中提供了静态方法,而且该方法的返回值就是这个类的对象.(当然,这种方法并不是所有的类中都有提供)
我们来看一下Calendar中所提供的静态方法中就有一个返回值为 static Calendar的静态方法"getInstance()".
所以说,我们想拿到Calendar的对象可以直接
Calendar rili = Calendar.getInstance();
3.3 Calendar类对象字段类型
常量 | 描述 |
---|---|
Calendar.YEAR | 年份 |
Calendar.MONTH | 月份(从0开始的,get的时候记得+1) |
Calendar.DATE | 日期 |
Calendar.DAY_OF_MONTH | 日期(和上面相同) |
Calendar.HOUR | 12小时制的小时 |
Calendar.HOUR_OF_DAY | 24小时制的小时 |
Calendar.MINUTE | 分钟 |
Calendar.SECOND | 秒 |
Calendar.DAY_OF_WEEK | 星期几(1代表星期天,2代表星期一) |
3.4 Calendar类的方法
方法 | 作用 |
---|---|
public void set(int year,int month,int date,int hourofday,int minute,int second) | 设置日历的年、月、日、时、分、秒。 |
public int get(int field) | 返回给定日历字段的值。 |
public void setTime(Date date) | 使用给定的Date设置此日历的时间。Date------>Calendar |
public Date getTime() | 返回一个Date表示此日历的时间。Calendar----->Date |
abstract void add(int field,int amount) | 按照日历的规则,给指定字段添加或减少时间量。 |
public long getTimeInMillies() | 以毫秒为单位返回该日历的时间值。 |
3.5 代码示例
public static void main(String[] args) throws ParseException {
Calendar c1 = Calendar.getInstance();
//get
int year = c1.get(Calendar.YEAR);
int month = c1.get(Calendar.MONTH)+1;//注意这个加一
int day = c1.get(Calendar.DATE);
int hour = c1.get(Calendar.HOUR);
int minute = c1.get(Calendar.MINUTE);
int second = c1.get(Calendar.SECOND);
System.out.println(year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second);
//getTime
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date time = c1.getTime();
System.out.println(sdf.format(time));
//set
//设置完整的日期
c1.set(1999,12-1,22);//直接看弹出来的方法重载就好了
//设置单个的参数
c1.set(Calendar.YEAR,1999);
//add
c1.add(Calendar.DATE,10);
c1.add(Calendar.DATE,-10);
//setTime
String str = "1999-11-22 15:00:00";
Date date = sdf.parse(str);
c1.setTime(date);
System.out.println(sdf.format(c1.getTime()));
}
3.6 String,Date,Calendar相互转化
SimpleDateFormat里的format可以Date——>String
parse可以String——>Date
Calendar里的getTime可以Calendar——>Date
setTime可以Date——>Calendar
具体怎么转换自个琢磨去吧