2 回答

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
我認(rèn)為
.add(Calendar.WEEK_OF_YEAR,2);
是正確的,即使我會(huì)對(duì)它在年份變化期間的行為進(jìn)行一些測(cè)試

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊
java.time
LocalDate date = LocalDate.of(2019, Month.DECEMBER, 25);
switch (recurrence) {
case "Bi-Weekly": {
date = date.plusWeeks(2);
break;
}
case "Month": {
date = date.plusMonths(1);
break;
}
case "Quarterly": {
date = date.plusMonths(3);
break;
}
case "Half Yearly": {
date = date.plusMonths(6);
break;
}
case "Year": {
date = date.plusYears(1);
break;
}
default:
System.err.println("Unrecognized recurrence: " + recurrence);
break;
}
System.out.println("Added for " + recurrence + " gave: " + date);
嘗試使用字符串(以不同的順序)給出的差異代碼:
Added for Bi-Weekly gave: 2020-01-08
Added for Year gave: 2020-12-25
Added for Quarterly gave: 2020-03-25
Added for Half Yearly gave: 2020-06-25
Added for Month gave: 2020-01-25
您的日歷活動(dòng)是否也有時(shí)間?沒問題:如果使用 a 或 a 而不是 .ZonedDateTimeLocalDateTimeLocalDate
您使用的類設(shè)計(jì)不佳且已過時(shí)。我發(fā)現(xiàn)java.time,現(xiàn)代Java日期和時(shí)間API,使用起來要好得多。這就是為什么我想向您展示此選項(xiàng)的原因。Calendar
問:我可以在 Android 上使用 java.time 嗎?
是的,java.time在較舊和較新的Android設(shè)備上運(yùn)行良好。它只需要至少Java 6。
在Java 8及更高版本以及較新的Android設(shè)備(從API級(jí)別26開始)中,現(xiàn)代API是內(nèi)置的。
在Java 6和7中,獲得ThreeTen Backport,現(xiàn)代類的backport(ThreeTen for JSR 310;請(qǐng)參閱底部的鏈接)。
在(較舊的)Android上使用Android版本的ThreeTen Backport。它被稱為ThreeTenABP。并確保從中導(dǎo)入帶有子包的日期和時(shí)間類。org.threeten.bp
添加回答
舉報(bào)