首页 > 其他分享 >Calendar日历类常见方法

Calendar日历类常见方法

时间:2023-11-18 10:13:26浏览次数:23  
标签:常见 int 日历 MONTH static Calendar calendar

Calendar类

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

Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。Calendar getInstance方法返回一个 Calendar对象,其日历字段已由当前日期和时间初始化:

Calendar calendar = Calendar.getInstance();
calender.set(2021, 2, 2); // 设置年月日

Calendar对象能够生成为特定语言和日历风格实现日期-时间格式化所需的所有日历字段值,例如,日语-格里高里历,日语-传统日历。Calendar定义了某些日历字段返回值的范围,以及这些值的含义。例如,对于所有日历,日历系统第一个月的值是 MONTH == JANUARY

一、通过创建子类初化Calendar类对象

因为Calendar类是抽象类无法实例化,但是它有实现类所以可以通过创建子类初始化Calendar对象。

下图是Calendar实现类结构图。

在这里插入图片描述

通过子类创建初化对象

Calendar sun = new GregorianCalendar(2021, 1, 2);

二、常见方法

返回值 方法名 描述
void add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间
boolean after(Object when) 判断此 Calendar 表示的时间是否在指定 Object 表示的时间之后,返回判断结果。
boolean before(Object when) 判断此 Calendar 表示的时间是否在指定 Object 表示的时间之前,返回判断结果。
int compareTo(Calendar ca) 比较两个 Calendar 对象表示的时间值
void set(int field, int value) 将给定的日历字段设置为给定值。
int get(int field) 返回给定日历字段的值。
Date getTime() 返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。
long getTimeInMillis() 返回此 Calendar 的时间值,以毫秒为单位。

三、字段

类型 字段名 描述
static int YEAR
static int MONTH
static int DATE
static int HOUR_OF_DAY
static int MINUTE
static int SECOND
static int MILLISECON 毫秒
static int DAY_OF_MONTH 指示一个月中的某天,和DATE一样
static int DAY_OF_WEEK 指示一个星期中的某天
static int DAY_OF_WEEK_IN_MONTH 指示当前月中的第几个星期
static int WEEK_OF_MONTH 指示当前月中的星期数
static int DAY_OF_YEAR 指示当前年中的天数
static int WEEK_OF_YEAR 指示当前年中的星期数

注意:month是从0开始的,而月份是从1开始的,所以month需要加一。

Calendar calendar = new GregorianCalendar(2023,12,1);
int i = calendar.get(Calendar.MONTH);
System.out.println(i);  						// 输出0,所以设置指定月份时要减一

Calendar now = Calendar.getInstance();  		// 现在日期 2023-11-17
System.out.println(now.get(Calendar.MONTH)); 	// 输出10

三、示例

// 初化Calaendar对象
Calendar future = Calendar.getInstance();
future.set(2021, 2, 2);
Calendar calendar = Calendar.getInstance();
calendar.set(2011, 2, 1);
String futureStr = future.get(Calendar.YEAR) + "-" + future.get(Calendar.MONTH) +
    "-" + future.get(Calendar.DAY_OF_MONTH);
String calendarStr = calendar.get(Calendar.YEAR) + "-" + calendar.get(Calendar.MONTH) +
    "-" + calendar.get(Calendar.DAY_OF_MONTH);
// 判断此 future 表示的时间是否在指定 calendar 表示的时间之后,返回判断结果。
if (future.after(calendar)) {
    System.out.println("future日期" + futureStr + ",在calendar日期" +
                       calendarStr + "之后"); 
}

输出结果:

future日期2021-2-2,在calendar日期2011-2-1之后

compareTo比较器

// compareTo比较器
int i = future.compareTo(calendar);
if (i > 0) {
    System.out.println("future日期" + futureStr + ",在calendar日期" +
                       calendarStr + "之后"); // <--- 输出这个
} else if (i < 0) {
    System.out.println("future日期" + futureStr + ",在calendar日期" +
                       calendarStr + "之前");
} else {
    System.out.println("相等");
}

输出结果:

future日期2021-2-2,在calendar日期2011-2-1之后

转Date类型格式化输出

Calendar sun = new GregorianCalendar(2021, 1, 2);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = dateFormat.format(sun.getTime()); // 获取Date对象格式化输出
System.out.println(format); 

输出结果:

2021-02-02 00:00:00

end

标签:常见,int,日历,MONTH,static,Calendar,calendar
From: https://www.cnblogs.com/xiaoaiblogs/p/17840099.html

相关文章

  • 什么是零件厂管理ERP?常见的零件厂管理ERP有哪些
        不同的零件部有不同的配料、生产工序、制造工艺以及包装和工时等,部分非标产品涉及的生产工艺较为复杂,繁多的零件管理工作量并不少,传统的管理模式难以满足现代零件行业的管理需求。进入数字化和信息时代,有很多的零件厂借助数字和智能技术实现透明化车间管理,高效整合......
  • mysql函数常见字符串函数
    1、BIT_LENGTH返回值为二进制的字符串str长度。--格式:BIT_LENGTH(str)selectBIT_LENGTH('abc'); 2、CONCAT返回结果为连接参数产生的字符串。--格式:concat(str1,str2,…)selectCONCAT('a','b','c')   3、ELT假设n等于1,用这个n去跟后一个数比较,如果n大......
  • mysql函数常见数学函数
    1、ABS(x)返回x的绝对值 --格式:ABS(X)selectABS(23) 2、PI()返回圆周率π,默认显示6位小数--格式:PI()selectPI()  3、SQRT(x)返回非负数的x的二次方根--selectSQRT(X)selectSQRT(2)    4、MOD(x,y)返回x被y除后的余数--selectMOD(......
  • 常见面试题-HashMap源码
    了解HashMap源码吗?参考文章:https://juejin.cn/post/6844903682664824845https://blog.51cto.com/u_15344989/3655921以下均为jdk1.8的HashMap讲解首先,HashMap的底层结构了解吗?底层结构为:数组+链表+红黑树什么时候链表会转换为红黑树呢?当一个位置上哈希冲突过多时,会导致......
  • Java常见八大异常(新手必看)
    ......
  • 定制开发手机软件常见代码!
    随着智能手机的普及,手机应用开发已成为当今IT行业的热门领域,越来越多的企业和个人选择定制开发手机应用,以满足自身的业务需求,在开发过程中,一些常见的代码和技巧是必不可少的,本文将分享一些定制开发手机APP的常见代码和技巧,帮助您更好地进行开发。一、使用Kotlin语言的优势Kotlin是......
  • 产业园区常见五种运营模式
    产业园区常见五种运营模式      ......
  • 代码混淆的原理是什么?常见代码混淆方法介绍
    ​代码混淆的原理是什么?常见代码混淆方法介绍本文主要想你介绍代码混淆的原理,常见代码混淆方法,欢迎查阅~移动应用代码安全非常重要,代码逆向会导致代码逻辑被获取,进一步导致控制流被hook,安全防线被破,给APP安全带来巨大风险,因此开发者一般都会进行代码混淆保护。本文主要介绍了......
  • Jenkins常见问题和常用命令
    常用命令:通过浏览器重启服务:http://192.168.0.1:8080/restart常见问题:ERROR:Exceptionwhenpublishing,exceptionmessage[Exectimedoutorwasinterruptedafterxxxxms]在SendfilesorexecutecommandsoverSSH-->Advanced里设定如下:或者将timeout时间延长到合适的......
  • 常见问题
    在python中,什么是生成器,什么是迭代器,他们的区别是什么生成器是一种特殊类型的函数,它使用`yield`语句来产生一个序列的值。生成器函数在每次调用时返回一个生成器对象,可以通过调用生成器对象的`__next__()`方法来逐个获取生成器产生的值。生成器可以通过循环或使用`next()`函数来......