Java替代calendar_Android Java Calendar替代方案,具有以下功能

针对Java Calendar在Android平台上的问题,文章介绍了使用java.time包中的LocalDate和IsoFields类来替代Calendar,确保从星期一开始计算周数,并遵循ISO 8601标准。通过示例代码展示了如何获取日期对应的ISO周数和基于周的年份,同时提及了ThreeTen-Backport库作为早期Android版本的解决方案。
摘要由CSDN通过智能技术生成

我需要从星期一开始写日历。

就目前的日期(07/8月/ 2012日)而言,第一天为星期一,星期天为1天,Java为我提供了一年的33,而Android 32,为什么?

所以我需要日历替代品,有以下特点。

我正在使用的代码:Calendar cal = Calendar.getInstance();

cal.setFirstDayOfWeek(Calendar.MONDAY);

cal.setMinimalDaysInFirstWeek(1);

out("For date : "+df.format(cal.getTime())+" Week = "+cal.get(Calendar.WEEK_OF_YEAR));

有什么帮助吗?

最佳答案:

DRLocalDate.of( 2012 , Month.AUGUST , 7 )

.get( IsoFields.WEEK_OF_WEEK_BASED_YEAR )

三十二

现场

不确定您的问题的直接答案,但可能在游戏中有不同的Locale值。在Calendar中,一周的定义因地区而异。

但这是没有意义的。您应该使用java.time类替换Calendar类。

Java.时间

Calendar是麻烦的旧日期时间类的一部分,现在是遗留的,被java.time类取代。对于早期的android,请参阅下面的最后一个项目符号。

你必须定义你所说的周数。定义周数和周数有不同的方法。

默认情况下,java.time类使用标准的ISO 8601 definition:week 1有日历年的第一个星期四,从星期一开始(如您所要求的那样)。所以一年有52或53周。日历年的第一天和最后几天可能会在上一个/下一个基于周的年份中降落。

LocalDate类表示一个仅日期的值,不带时间和时区。

LocalDate ld = LocalDate.of( 2012 , Month.AUGUST , 7 ) ;

询问标准周数。您可以要求这些TemporalField对象中的任何一个:IsoFields.WEEK_BASED_YEAR&IsoFields.WEEK_OF_WEEK_BASED_YEAR

int weekOfWeekBasedYear = ld.get( IsoFields.WEEK_OF_WEEK_BASED_YEAR ) ;

int yearOfWeekBasedYear = ld.get( IsoFields.WEEK_BASED_YEAR ) ;

使用标准ISO 8601 format of YYYY-Www-D转储到控制台。

String isoOutput = yearOfWeekBasedYear + "-W" + String.format("%02d", weekOfWeekBasedYear) + "-" + dayOfWeekNumber ;

System.out.println( ld + " is ISO 8601 week: " + isoOutput ) ;

看这个code run live at IdeOne.com。

2012-08-07是ISO 8601周:2012-W32-2

顺便说一下,如果android能够运行ThreeTen-Extra库,您会发现它的YearWeek类非常有用。

关于java.time

将AA>框架构建到Java 8和以后。这些类取代了以前麻烦的日期时间类,如java.time,legacy,&java.util.Date。

现在在Calendar中的SimpleDateFormat项目建议迁移到Joda-Time类。

要了解更多信息,请参见maintenance mode。和搜索堆栈溢出的许多例子和解释。规格为java.time。

在哪里获得java.time类?

Oracle Tutorial、JSR 310及更高版本

内置的。

标准JAVA API的一部分与捆绑实现。

Java 9添加了一些小的特性和修复。

Java SE 8和Java SE 9

Java.TimeActudio的许多功能在Java SE 6中被移植到Java 6和7。

Java SE 7

更高版本的android包java.time类的实现。

对于早期的android,ThreeTen-Backport项目采用了threeten后台端口(上面提到过)。参阅Android。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值