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

最近遇到一些需求是根据年月日统计对应数量,关于如何统计留到下一篇说,本文主要介绍用到的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结束

扫描二维码关注公众号,回复: 9294631 查看本文章
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个月我会在下一篇文章中写出

发布了25 篇原创文章 · 获赞 22 · 访问量 3647

猜你喜欢

转载自blog.csdn.net/weixin_42443419/article/details/103337247
今日推荐