mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-06-05 21:59:17 +02:00
handle leap years properly
This commit is contained in:
@@ -11,6 +11,7 @@ import android.text.TextUtils;
|
|||||||
import com.simplemobiletools.calendar.models.Event;
|
import com.simplemobiletools.calendar.models.Event;
|
||||||
|
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
|
import org.joda.time.DateTimeZone;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -170,7 +171,17 @@ public class DBHelper extends SQLiteOpenHelper {
|
|||||||
final List<Event> newEvents = fillEvents(cursor);
|
final List<Event> newEvents = fillEvents(cursor);
|
||||||
for (Event e : newEvents) {
|
for (Event e : newEvents) {
|
||||||
final int periods = (ts - e.getStartTS()) / e.getRepeatInterval();
|
final int periods = (ts - e.getStartTS()) / e.getRepeatInterval();
|
||||||
final int newStartTS = e.getStartTS() + periods * e.getRepeatInterval();
|
DateTime currStart = new DateTime(e.getStartTS() * 1000L, DateTimeZone.getDefault());
|
||||||
|
DateTime newStart;
|
||||||
|
if (e.getRepeatInterval() == Constants.DAY) {
|
||||||
|
newStart = currStart.plusDays(periods);
|
||||||
|
} else if (e.getRepeatInterval() == Constants.WEEK) {
|
||||||
|
newStart = currStart.plusWeeks(periods);
|
||||||
|
} else {
|
||||||
|
newStart = currStart.plusYears(periods);
|
||||||
|
}
|
||||||
|
|
||||||
|
final int newStartTS = (int) (newStart.getMillis() / 1000);
|
||||||
final int newEndTS = newStartTS + (e.getEndTS() - e.getStartTS());
|
final int newEndTS = newStartTS + (e.getEndTS() - e.getStartTS());
|
||||||
e.setStartTS(newStartTS);
|
e.setStartTS(newStartTS);
|
||||||
e.setEndTS(newEndTS);
|
e.setEndTS(newEndTS);
|
||||||
|
Reference in New Issue
Block a user