欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

最近根据时间统计所用到的Calendar类

程序员文章站 2022-04-29 18:57:54
...

最近遇到一些需求是根据年月日统计对应数量,关于如何统计留到下一篇说,本文主要介绍用到的Calendar工具类,因为好久不用了都有点忘了,所以算是做个笔记吧,有需要的也可以看一下
在java中时间类主要有Date、Calendar,但是Date中的方法大部分已经过时,所以主要用的还是Calendar,而且使用也更加方便

Calendar简介

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量

由于是抽象类,无法直接获取实例,所以采用如下方法

Calendar calendar = Calendar.getInstance();

底层源码是提供了一个静态方法来获取对象

public static Calendar getInstance()
    {
        return createCalendar(TimeZone.getDefault(), Locale.getDefault(Locale.Category.FORMAT));
    }

应用

查日子[get]

static int YEAR 指示年的 get 和 set 的字段数字

static int MONTH 指示月份的 get 和 set 的字段数字。

static int DAY_OF_MONTH get 和 set 的字段数字,指示一个月中的某天。

static int DAY_OF_WEEK get 和 set 的字段数字,指示一个星期中的某天。

static int DAY_OF_YEAR get 和 set 的字段数字,指示当前年中的天数。

get(int field) 返回给定日历字段的值。
int field–定日历字段的值上面的静态变量

Calendar calendar = Calendar.getInstance();
        int y=calendar.get(Calendar.YEAR);
        System.out.println(y+"年");
        //月份是从0到11
        int m=calendar.get(Calendar.MONTH);
        System.out.println((m+1)+"月");
        int d=calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(d+"日");
        //此处为魔法值,本文写于周日,周日对应魔法值为1,周一为2,以此类推
        //源码:public final static int SUNDAY = 1;
        int wd=calendar.get(Calendar.DAY_OF_WEEK);
        System.out.println("星期魔法值"+wd);
        int yd=calendar.get(Calendar.DAY_OF_YEAR);
        System.out.println("一年中第"+yd+"天");
2019121日
星期魔法值1
一年中第335

设日子

以我的项目为例
我项目的框架是springboot结合jpa,查询两段时间之间的内容,比如一天从00:00:00开始到23:59:59结束

Calendar todayStart = Calendar.getInstance();
        todayStart.set(Calendar.HOUR_OF_DAY, 0);
        todayStart.set(Calendar.MINUTE, 0);
        todayStart.set(Calendar.SECOND, 0);
        todayStart.set(Calendar.MILLISECOND, 0);
``
Calendar todayEnd = Calendar.getInstance();
        todayEnd.set(Calendar.HOUR_OF_DAY, 23);
        todayEnd.set(Calendar.MINUTE, 59);
        todayEnd.set(Calendar.SECOND, 59);
        todayEnd.set(Calendar.MILLISECOND, 999);       
 
甚至还可以直接set想想要的日期,很方便了

```java
calendar.set(2019,12,1);

关于动态统计当前月往前12个月我会在下一篇文章中写出

相关标签: Calendar类