java零基础入门-日期时间类(复盘)

161 阅读7分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第19天,点击查看活动详情

哈喽,各位小伙伴们好,我是喵手。

       今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流学习,互相学习,才能成长的更快,对吧。

       我是一名java开发,所以日常接触到最多的就是java啦,所以我趁自己有空,就来好好回忆,把自己学到的会的,进行输出,不图什么有回报,只想能帮助到更多的小伙伴,就好。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对喵手我创作道路上最好的鼓励与支持!

一、前言

       回首这几期,我们都是在讲java中的日期事件类,对吧,不知道有多少小伙伴都消化吸收了,如果没有,没关系,这一期,我们来个复盘,进行总体性的谈谈,顺便带着大家回忆一下,这些时间日期类都有哪些作用,常用方法有哪些。最后我会带着一个实例深入结合,希望大家能看完我写的文章有所收获,好吧?

       我们是前后讲了有三种类型的时间日期类,分别如下:如果有需要的话,可以前往我这写文章中,独自享受,都是非常详细,具有很好的入门价值。

二、正文

1、Date类

       说起这个类,它是随着jdk的升级,慢慢在对它进行功能转移,基本jdk8,已经很多方法都被弃用了,所以论时间类,其实更多的会选择DateFormat类,其包路径:java.util.Date。但目前还是会经常使用Date类来获取系统时间,及系统时间时间戳等。

       如下是实际项目开发中,会经常用到的,如下是两个常用的方法:

  • public Date():表示时间对象实例化,获取当前系统时间,精确到毫秒。
  • public Date(long date):表示按指定时间对象实例化。

       这个是大家普遍需要掌握的,如果不是很清楚,可以单独去看我这篇java零基础之Date类的详解,对入门的小白来说还是很有科普及实用价值的。

       然后就是对于该Date类还有一个 getTime()方法,该方法也是会经常拿来获取当前系统时间戳等场景,返回的是一个long型,其精确到毫秒。它是一种非静态方法,只能通过类对象访问,如果尝试使用类名称访问该方法,会直接报错。

实用演示:

@Test
public void test() {
    System.out.println(new Date());

    //创建日期对象,获取当前系统时间。
    Date date = new Date(new Date().getTime());
    System.out.println(date);
}

2、DateFormat类

       这个类也是处理时间日期相关的类。其包路径:java.text.DateFormat这个类提供了时间对象与字符串时间之间的互相转换,在某些场景,经常会有用到字符串时间格式化,就是可以通过它来实现。

       经常使用到这个类的是SimpleDateFormat,因为DataFormat是一个抽象类,所以会通过使用它的子类(SimpleDateFormat类),然后通过它可以用给定的模式和默认语言环境的日期格式符号转换。比如:

指定为如下字符串格式:比如:常用的这些

yyyyMMdd hh:MM:ss
yyyy-MM-dd hh:MM:ss
yyyy年MM月dd日 hh时MM分ss秒
yyyyMMdd
hh:MM:ss

       就可以通过SimpleDateFormat 类来根据指定的时间格式转换。使用起来还是很方便快件的。比如我给大家试验一下,大家可能就会清楚了。

@Test
public void test(){

    Date date = new Date();
    //定义时间格式输出
    DateFormat format = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");

    //将Date对象转String时间字符串
    String dateStr = format.format(date);
    System.out.println("Date对象转字符串:" + dateStr);
}

运行后控制台打印:

Date对象转字符串:20220419115210

时间格式换成“yyyyMMdd”试试:

DateFormat format = new SimpleDateFormat("yyyyMMdd");

运行后控制台打印:

Date对象转字符串:20220419

3、Calendar类

       说起Calendar类,这是一个与日期有着极大作用的类,其包路径位于java.util.Calendar与DateFormat类一样,同身为抽象类,所以在使用的时候,也不能通过它本身来创建使用,而是得通过静态方法来创建,再返回Calendar对象。

实例化Calendar类,具体如下:

//创建Calendar类
Calendar calendar = Calendar.getInstance();

       Calendar类提供了丰富的静态成员变量,其中对于它的常用方法而言,有如下几种:

  • public int get(int field) :返回指定日历字段的值。

  • public void set(int field, int value) :将指定的日历字段设置为给定值。

  • public abstract void add(int field, int amount) :根据日历的规则,为指定的日历字段添加或减去指定的时间量。

  • public Date getTime() :返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。  

       基本在日常项目实战中,这些其实都会有用到的,就看大家对于这些方法有没有掌握熟练,比如我举几个例子吧:

  • 获取系统时间的日月年并打印输出:

具体实现方式如下:

@Test
public void testCalendar() {

    //创建Calendar类
    Calendar calendar = Calendar.getInstance();

    //设置年并获取
    int year = calendar.get(Calendar.YEAR);
    //设置月并获取
    int month = calendar.get(Calendar.MONTH);
    //设置日并获取
    int day = calendar.get(Calendar.DAY_OF_MONTH);

    //打印
    System.out.println(year + "年" + month + "月" + day + "日");
}

实际运行截图:

       这里我再给大家科普一遍,由于在Calendar类中,月份表示是从0-11的,代表的是我们正常1-12月。所以你会看到,明明现在是4月19号,怎么输出打印的是3月19号呢,避免有的小伙伴误解,其实缘由就在这里啦。

       还有就是星期,西方是从周日开始算,而我们是从周一开始算起。

所以获取一周的星期几,你可以如下获取:

Calendar.DAY_OF_WEEK

       但是你得在获取到的结果基础上-1,也就是Calendar.DAY_OF_WEEK-1进行换算才是在我国对应的星期几。

       具体给大家演示一下:2022年4月19日日历显示星期二,如果使用Calendar.DAY_OF_WEEK获取到值应该是3,我们通过代码来验证一下:

@Test
public void test9() {

    //创建Calendar类
    Calendar calendar = Calendar.getInstance();
    int week = calendar.get(Calendar.DAY_OF_WEEK);
    System.out.println("calendar.get(Calendar.DAY_OF_WEEK) = " + calendar.get(Calendar.DAY_OF_WEEK));

    //输出
    System.out.println("实际对应中国日历,2022年4月19是星期" + (week - 1));}

实际运行截图:

       是不是,看如上结果,所以啊​,​在使用Calendar类的时候,这两点是不要误会了,大致有个印象就行。省的到时候被人误解,说,你后端怎么获取个时间还是错的,哈哈哈哈,如果直面给人家说,我去检查下代码,那就丑大啦。

       ... ...

       好啦,以上就是对应java-api中对时间日期类的复盘总结啦,如果对文中的任何知识点有疑问,欢迎评论区评论留言呀,我看见都会一一解答的。

三、结尾

       教学是结束了,但是有些话不知我但讲不当讲,啊哈哈, 可我还是想说给你们听听。如下是我很喜欢的一句话,我打算送给你们,希望我们都能变得更好更优秀。

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!

-------------------------------------------

⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

-------------------------------------------