Android 如何以正确的方式将日期添加到日历中
我有一个ArrayList,它包含日期-[1,52020]//天|月|年 我以以下方式将此添加到日历中:Android 如何以正确的方式将日期添加到日历中,android,datetime,kotlin,calendar,java.util.calendar,Android,Datetime,Kotlin,Calendar,Java.util.calendar,我有一个ArrayList,它包含日期-[1,52020]//天|月|年 我以以下方式将此添加到日历中: calendar.add(Calendar.DAY_OF_MONTH, dateList[0]) calendar.add(Calendar.MONTH, dateList[1]) calendar.add(Calendar.YEAR, dateList[2]) 但当我尝试将此分配给我的日期选择器时,我得到了以下日期: datePicker.maxDate = calendar date
calendar.add(Calendar.DAY_OF_MONTH, dateList[0])
calendar.add(Calendar.MONTH, dateList[1])
calendar.add(Calendar.YEAR, dateList[2])
但当我尝试将此分配给我的日期选择器时,我得到了以下日期:
datePicker.maxDate = calendar
date picker Log: 16/10/4040
我的代码可能有什么问题?这是因为您将这些值添加到实例化代码的初始日期。相反,您应该使用set
这是因为您将这些值添加到实例化的初始日期。相反,您应该使用set
Calendar.add函数可根据您当前使用的日期进行添加
日历。设置它将设置日期
Calendar.add函数可根据您当前使用的日期进行添加
日历。设置它将设置日期
现代答案。自2014年起在Java中有效,我认为它在几年后出现在Android上 java.time和ThreeTenABP 我喜欢Java,因为这是我能写的
ArrayList<Integer> dateList = new ArrayList<>(Arrays.asList(1, 5, 2020));
LocalDate date = LocalDate
.of(dateList.get(2), dateList.get(1), dateList.get(0));
System.out.println("Date: " + date);
2020年5月1日星期五00:00:00 CEST
问:java.time不需要Android API级别26吗?
time在较旧和较新的Android设备上都能很好地工作。它至少需要Java6
在Java8和更高版本以及API级别为26的较新Android设备上,内置了现代API。只有在这种情况下,不使用DateTimeUtils进行转换,使用稍微简单的GregoriaCalendar.FromStarToDay。
在非Android Java 6和7中,获得了Three Ten Backport,即JSR 310的现代类Three Ten的Backport;请参阅底部的链接。
在较旧的Android上,使用Android版本的ThreeTen Backport。它叫ThreeTenABP。并确保使用子包从org.threeten.bp导入日期和时间类。
链接
解释如何使用java.time。
,其中首次描述了java.time。
,java.time的后端口到JSR-310的Java6和Java7。
,Android版Three Ten Backport
,解释得非常透彻。
现代答案。自2014年起在Java中有效,我认为它在几年后出现在Android上 java.time和ThreeTenABP 我喜欢Java,因为这是我能写的
ArrayList<Integer> dateList = new ArrayList<>(Arrays.asList(1, 5, 2020));
LocalDate date = LocalDate
.of(dateList.get(2), dateList.get(1), dateList.get(0));
System.out.println("Date: " + date);
2020年5月1日星期五00:00:00 CEST
问:java.time不需要Android API级别26吗?
time在较旧和较新的Android设备上都能很好地工作。它至少需要Java6
在Java8和更高版本以及API级别为26的较新Android设备上,内置了现代API。只有在这种情况下,不使用DateTimeUtils进行转换,使用稍微简单的GregoriaCalendar.FromStarToDay。
在非Android Java 6和7中,获得了Three Ten Backport,即JSR 310的现代类Three Ten的Backport;请参阅底部的链接。
在较旧的Android上,使用Android版本的ThreeTen Backport。它叫ThreeTenABP。并确保使用子包从org.threeten.bp导入日期和时间类。
链接
解释如何使用java.time。
,其中首次描述了java.time。
,java.time的后端口到JSR-310的Java6和Java7。
,Android版Three Ten Backport
,解释得非常透彻。
Kotlin+过时且麻烦的datetime API=没有好主意。。。为此使用java.time.Kotlin+过时且麻烦的datetime API=没什么好主意。。。为此使用java.time。
ZonedDateTime startOfDay = date.atStartOfDay(ZoneId.systemDefault());
Calendar oldfashionedCalendar = DateTimeUtils.toGregorianCalendar(startOfDay);
System.out.println(oldfashionedCalendar.getTime());