首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android日历添加日

Android日历添加日
EN

Stack Overflow用户
提问于 2015-04-16 15:10:27
回答 2查看 322关注 0票数 1

我有一个数组字符串,由从数据库获取的数据填充。现在,对于数组的每一行,我想在日历中添加一天,今天的"0“行,明天的"1”行,明天之后的"2“行等等。我创建了这个代码来控制数组中每个元素的位置,但是我是如何添加天数的呢?谢谢

代码语言:javascript
复制
Calendar prova = Calendar.getInstance();
        int size = id_op.length;
        for(int i = 0; i< size; i++){                 

        }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-16 15:19:02

您只需获得以毫秒为单位的时间,然后将一天的毫秒添加到其中。

代码语言:javascript
复制
Calendar prova = Calendar.getInstance();
        int size = id_op.length;
        for(int i = 0; i< size; i++){                 
            Long time = prova.getTimeInMillis();
            time = time + 86400000;
            prova.setTimeInMillis(time);           
        }
票数 1
EN

Stack Overflow用户

发布于 2018-02-02 19:24:21

tl;dr

代码语言:javascript
复制
new ArrayList<>().add( 
    LocalDate.now().plusDays( 1 ) 
)

java.time

您正在使用麻烦的旧Calendar类,它现在是遗留的,被在JSR 310中定义的java.time类所取代。

LocalDate

LocalDate类表示一个日期纯值,没有一天的时间,也没有时区.

时区是确定日期的关键。在任何特定时刻,全球各地的日期因地区而异。例如,午夜后几分钟在法国巴黎是一个新的一天,而仍然“昨天”在魁北克省

如果没有指定时区,JVM将隐式应用其当前默认时区。默认情况在任何时候都可能发生变化,因此您的结果可能会有所不同。最好将所需/预期的时区显式地指定为参数。

continent/region格式指定continent/region,如America/MontrealAfrica/CasablancaPacific/Auckland。不要使用3-4字母的缩写,如ESTIST,因为它们不是真正的时区,不标准化,甚至不是唯一的(!)。

代码语言:javascript
复制
ZoneId z = ZoneId.of( "America/Montreal" ) ;  
LocalDate today = LocalDate.now( z ) ;

如果您想使用JVM当前的默认时区,请请求它并作为参数传递。如果省略,JVM的当前缺省值将被隐式应用。最好直截了当。

代码语言:javascript
复制
ZoneId z = ZoneId.systemDefault() ;  // Get JVM’s current default time zone.

或者指定日期。你可以用一个数字来设定一个月,一月到十二月的数字为1-12。

代码语言:javascript
复制
LocalDate ld = LocalDate.of( 1986 , 2 , 23 ) ;  // Years use sane direct numbering (1986 means year 1986). Months use sane numbering, 1-12 for January-December.

或者,更好的是,使用预定义的Month枚举对象,一年中每个月使用一个.提示:在代码库中使用这些Month对象,而不仅仅是整数,以使代码更自文档化,确保有效值,并提供类型安全

代码语言:javascript
复制
LocalDate ld = LocalDate.of( 1986 , Month.FEBRUARY , 23 ) ;

List

一般来说,使用Java集合要比使用基元数组好。

您可以选择指定ArrayList的初始容量,以避免在添加更多项时ArrayList自身调整大小的性能损失。

代码语言:javascript
复制
int initialCapacity = … ; 
List< LocalDate > dates = new ArrayList<>( initialCapacity ) ;

加上你们的约会。

代码语言:javascript
复制
dates.add( ld ) ;  // Today, perhaps.
dates.add( ld.plusDays( 1 ) ;  // Tomorrow.
dates.add( ld.plusDays( 2 ) ;  // Day after tomorrow.

或者用一个循环。

代码语言:javascript
复制
for( int i = 0 ; i <=10 ; i ++ ) {
    dates.add( ld.plusDays( i ) ) ;
}

关于java.time

http://docs.oracle.com/javase/9/docs/api/java/time/package-summary.html框架内置到Java8和更高版本中。这些类取代了麻烦的旧遗赠日期时间类,如java.util.DateCalendarSimpleDateFormat

http://www.joda.org/joda-time/项目现在在维护模式中,建议迁移到java.time类。

要了解更多信息,请参见http://docs.oracle.com/javase/tutorial/datetime/TOC.html。并搜索堆栈溢出以获得许多示例和解释。规范是JSR 310

在哪里获得java.time类?

  • Java 8Java 9,以及后来的
    • 内置的。
    • 带有捆绑实现的标准Java的一部分。
    • Java 9添加了一些次要的特性和修复。

三次-额外项目使用其他类扩展java.time。这个项目是将来可能加入java.time的试验场。您可以在这里找到一些有用的类,如IntervalYearWeekYearQuarter更多

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

https://stackoverflow.com/questions/29678906

复制
相关文章

相似问题

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