还不了解Calendar?实现自定义Android日历,看这篇就够了

本文介绍了Android中的Calendar类,探讨其用途和使用方法,包括获取实例、set()、add()、roll()等关键方法,并展示了如何利用Calendar实现自定义日历组件。同时,文章还提及了日历相关的特殊规则和时间戳计算。
摘要由CSDN通过智能技术生成

Calendar

背景介绍

日历对我的生活而言是一个容易被忽视,而又十分重要的东西。在Android中,我们也常常需要操作日历去实现一些需求。比如根据日期获取对应数据,或者承载了一些需求的自定义日历。为了方便对日期的操作,诞生了Calendar 类。这大大简化了我们的计算。
事实上,我们只需要知道如何操作Calendar就行了。本篇我们将一起来了解下Calendar,并且实现一个自定义日历。

方便的Calendar类

Calendar是干什么的?

The Calendar class is an abstract class that provides methods for converting between a specific instant in time and a set of calendar fields such as YEAR, MONTH, DAY_OF_MONTH, HOUR, and so on, and for manipulating the calendar fields, such as getting the date of the next week.

上面是Android文档中对Calendar是什么的简单介绍。大概的意思就是说,Calendar是一个抽象类。它提供了一些用于一个具体时间和Calendar的字段(比如,YEAR、MONTH、DAY_OF_MONTH、HOUR等)互相转换的方法,以及对Calendar的字段的操作方法(比如,获取下一周的日期)。
综上所述,Calendar就是一个操作日历的工具类。

Calendar的使用

获得一个Calendar实例

Calendar calendar = Calendar.getInstance(); //这个方法获取到的是默认的Calendar实例。
//一般使用默认的就好,它会根据app运行的时区、语言环境自动创建相应的Calendar实例。

Calendar calendar = Calendar.getInstance(Locale.CHINA); //根据Locale来获取相应的Calendar实例。

Calendar calendar = Calendar.getInstance(TimeZone.getDefaultRef(), Locale.CHINA);
//根据TimeZone和Locale来获取相应的Calendar实例。

//这些方法最终调用的都是createCalendar()
private static Calendar createCalendar(TimeZone zone,  Locale aLocale) {
    return new GregorianCalendar(zone, aLocale); //Android中使用了GregorianCalendar。
    //注意这里每次都是new一个新的Calendar实例。
}

挑几个方法特别说明下

  • set(f, value)

    1. 调用该方法可以把Calendar的某个字段f的值设置为指定值value。
    2. 这里需要注意:DAY_OF_MONTH字段是从1开始,如果设置0,表示上个月的最后一天;MONTH字段是从0开始,如果设置12,表示下一年的第一个月。
    3. set()方法设置后,仅仅是改变了Calendar的指定字段的值,但是Calendar表示的日期并没有重新计算。Calendar将会在下次调用get()、getTime()、getTime
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值