Java时间类从此变得清晰明了,覆盖所有面试知识点

//getTime()——获取到时间的毫秒形式 返回的是long

System.out.println(d.getTime());// 1628813591697

}

}

输出结果:

Fri Aug 13 08:13:11 CST 2021

2021

8

13

8

13

11

1628813591697

注:年份是从1900年开始的;月份是从0开始的。

Markdown代码块里是不显示删除线的,这里截图给大家。通过上述get方法,Date类可以获取具体时间,不过,这些函数的 API 不易于实现国际化,官方不再推荐使用Date类来获取时间,推荐使用Calendar类。因此,这里删除线代表可以用但不推荐。

总结:对于Date类我们需要掌握:

1.new Date() 可以获取到系统时间

2.getTime() 能获取到时间的long形式,可以用来计算时间差

Calendar类


上面我们已经知道Date类不再推荐用来获取时间,而是推荐Calendar类,话不多说直接上代码

注:Calendar 日历类,是一个抽象类,里边提供了很多操作日历字段的方法如:YEAR、 MONTH、 DAY OF MONTH、HOUR。因此不可以去new对象。虽然抽象类不能创建对象,但是jdk官方提供了一个实例对象的操作:

Calendar cal = Calendar.getInstance();

我们通过这条代码就是直接造了一个Calender的对象

【参考代码】

package date;

import java.util.Calendar;

import java.util.Date;

public class TestCalendar {

public static void main(String[] args) {

Calendar cal = Calendar.getInstance();// 实例化对象

System.out.println(cal);//java.util.GregorianCalendar[time=1628815192318,areFieldsSet=true,…]

//用Calendar类get方法来获取具体时间

System.out.println(cal.get(Calendar.YEAR));// 年 2021

System.out.println(cal.get(Calendar.MONTH)+1);// 8月 月份从0开始

System.out.println(cal.get(Calendar.DATE));// 日

System.out.println(cal.get(Calendar.HOUR));// 时

System.out.println(cal.get(Calendar.MINUTE));// 分

System.out.println(cal.get(Calendar.SECOND));// 秒

//用Calendar类set方法设置时间—>用于计算

cal.set(Calendar.YEAR, cal.get(Calendar.YEAR)+10);// 十年以后 2031

System.out.println(cal.get(Calendar.YEAR));

cal.set(Calendar.MONTH,cal.get(Calendar.MONTH)+4);// 3月以后 11 月份从0开始的

System.out.println(cal.get(Calendar.MONTH));

//…同理日,时分秒都可以设置并计算

}

}

输出结果:

java.util.GregorianCalendar[time=1628815192318,areFieldsSet=true,…]

2021 // 年

8 // 月

13 // 日

9

5

22

2031 // 十年以后

11 //3月以后

【参考代码】

Calendar cal = Calendar.getInstance();// 实例化对象

get()方法解释:

get(你想获取的Canendar对象的信息)

例:cal.get(Calendar.YEAR);// 获取年份

set()方法解释:

set(需要设置的Calendar对象,获取该对象你需要信息)—>设置就可以用来计算

例:

cal.set(Calendar.YEAR, cal.get(Calendar.YEAR)+10);// 计算十年以后

System.out.println(cal.get(Calendar.YEAR));

Date类和Calendar类相互转换:


Date类和Calendar类既然有联系那必然可以相互转换,下面这段代码让大家更直观的了解:

【参考代码】

Date d = new Date();

System.out.println(d);

Calendar cal = Calendar.getInstance();//实例化对象

cal.getTime();

System.out.println(cal.getTime());

/*

输出结果:

Fri Aug 13 09:35:45 CST 2021

Fri Aug 13 09:35:45 CST 2021

*/

Calendar实例化的对象.getTime()就能获取到当前的系统时间,即一个Date对象,也就是Date d==cal.getTime();

###Calendar类转成了Date类

Calendar cal = Calendar.getInstance();

Date d = cal.getTime();

总结

谈到面试,其实说白了就是刷题刷题刷题,天天作死的刷。。。。。

为了准备这个“金三银四”的春招,狂刷一个月的题,狂补超多的漏洞知识,像这次美团面试问的算法、数据库、Redis、设计模式等这些题目都是我刷到过的

并且我也将自己刷的题全部整理成了PDF或者Word文档(含详细答案解析)

![我的美团offer凉凉了?开发工程师(Java岗)三面结束等通知…](https://upload-images.jianshu.io/upload_images/24616006-441472be66a1be00?imageMogr2/auto-orient/str 需要zi料+ 绿色徽【vip1024b】

ip%7CimageView2/2/w/1240)

66个Java面试知识点

架构专题(MySQL,Java,Redis,线程,并发,设计模式,Nginx,Linux,框架,微服务等)+大厂面试题详解(百度,阿里,腾讯,华为,迅雷,网易,中兴,北京中软等)

我的美团offer凉凉了?开发工程师(Java岗)三面结束等通知...

算法刷题(PDF)

我的美团offer凉凉了?开发工程师(Java岗)三面结束等通知...

orient/str 需要zi料+ 绿色徽【vip1024b】

ip%7CimageView2/2/w/1240)

66个Java面试知识点

架构专题(MySQL,Java,Redis,线程,并发,设计模式,Nginx,Linux,框架,微服务等)+大厂面试题详解(百度,阿里,腾讯,华为,迅雷,网易,中兴,北京中软等)

[外链图片转存中…(img-TyGzpKCL-1710356428069)]

算法刷题(PDF)

[外链图片转存中…(img-QPMhwDbZ-1710356428069)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值