首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Calendar[]数组设置setDisabledDays(Calendar[] days)中的禁用天数(Calendar[] days )

如何使用Calendar[]数组设置setDisabledDays(Calendar[] days)中的禁用天数(Calendar[] days )
EN

Stack Overflow用户
提问于 2018-03-08 14:14:02
回答 1查看 807关注 0票数 0

我试图使用wdullaer的资料日期时间选择器的setDisabledDays(Calendar[] days)方法禁用某些天,这是一种用于Android的替代日期时间选择器。

但我不知道如何使用Calendar[]将日期传递给方法

代码语言:javascript
复制
abscanButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        datePickerDialog = DatePickerDialog.newInstance(MainActivity.this, Year, Month, Day);

        datePickerDialog.showYearPickerFirst(false);

        datePickerDialog.setMinDate(calendar);

        Calendar[] days = new Calendar[3];
        days[0] = // I don't know how to do this part
        datePickerDialog.setDisabledDays(days);

        datePickerDialog.show(getFragmentManager(), "DatePickerDialog");
    }
}

我成功地setMinDate()了,没有任何错误。我只需要知道如何在Calendar数组中创建日期。

注意:我正在尝试手动添加日期。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-08 16:00:29

创建Calendar很容易:

代码语言:javascript
复制
Calendar cal = Calendar.getInstance();

此日历将具有当前日期和时间,位于JVM默认时区。如果您想要设置不同的日期、月份或其他什么,请使用set方法:

代码语言:javascript
复制
// set to March 5th 2018
cal.set(Calendar.DAY_OF_MONTH, 5);
cal.set(Calendar.MONTH, Calendar.MARCH);
cal.set(Calendar.YEAR, 2018);

在这个API中,月份是基于零的(一月为零,二月为1,等等),所以最好使用常量,如Calendar.MARCH,以避免任何偏离一的错误。

这个类是可变的,所以在将它分配给数组之前,总是用getInstance()创建一个新实例。

Threeten Backport

正如注释中所述,您可以使用这个图书馆 --更好,并且与java.time API兼容得更好(这将使将来的迁移更容易,因为java.time类可以在更新的Android级别中使用)。请参见如何安装/配置此库这里

有了这个库,创建特定日期就更容易了:

代码语言:javascript
复制
// March 5th 2018
LocalDate date = LocalDate.of(2018, Month.MARCH, 5);

或者,为了得到当前的日期:

代码语言:javascript
复制
LocalDate date = LocalDate.now();

然后,要转换为Calendar,必须将其设置为时区,然后进行转换:

代码语言:javascript
复制
Calendar cal = DateTimeUtils.toGregorianCalendar(date.atStartOfDay(ZoneId.systemDefault()));

一开始似乎很难,但是如果你研究这个API,您很快就会看到好处。Calendar采用的是一种一刀切的设计,但众所周知,它既麻烦又过时。新的API为每个用例提供了不同的日期/时间类型,您必须在它们之间进行明确的转换,以获得所需的内容。

这就是上面的转换代码看起来如此令人困惑的原因,但是一旦您有了这个想法,它就会比使用Calendar容易得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49175219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档