最近根据时间统计所用到的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+"天");
2019年
12月
1日
星期魔法值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个月我会在下一篇文章中写出