Issue #1051 - Using java.time.ZonedDateTime instead of java.util.Calendar for Java 1.8+

This commit is contained in:
Joakim Erdfelt 2016-11-17 14:44:58 -07:00
parent 7930a3dac8
commit 9f317dee94

View File

@ -24,7 +24,8 @@ import java.io.FilterOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Calendar; import java.time.ZonedDateTime;
import java.time.temporal.ChronoUnit;
import java.util.Date; import java.util.Date;
import java.util.Locale; import java.util.Locale;
import java.util.TimeZone; import java.util.TimeZone;
@ -53,7 +54,7 @@ public class RolloverFileOutputStream extends FilterOutputStream
final static int ROLLOVER_FILE_RETAIN_DAYS = 31; final static int ROLLOVER_FILE_RETAIN_DAYS = 31;
private RollTask _rollTask; private RollTask _rollTask;
private Calendar midnight; private ZonedDateTime midnight;
private SimpleDateFormat _fileBackupFormat; private SimpleDateFormat _fileBackupFormat;
private SimpleDateFormat _fileDateFormat; private SimpleDateFormat _fileDateFormat;
@ -175,13 +176,7 @@ public class RolloverFileOutputStream extends FilterOutputStream
_rollTask=new RollTask(); _rollTask=new RollTask();
midnight = Calendar.getInstance(); midnight = ZonedDateTime.now().toLocalDate().atStartOfDay(zone.toZoneId());
midnight.setTimeZone(zone);
// set to midnight
midnight.set(Calendar.HOUR, 0);
midnight.set(Calendar.MINUTE, 0);
midnight.set(Calendar.SECOND, 0);
midnight.set(Calendar.MILLISECOND, 0);
scheduleNextRollover(); scheduleNextRollover();
} }
@ -193,8 +188,8 @@ public class RolloverFileOutputStream extends FilterOutputStream
// Using Calendar.add(DAY, 1) takes in account Daylights Savings // Using Calendar.add(DAY, 1) takes in account Daylights Savings
// differences, and still maintains the "midnight" settings for // differences, and still maintains the "midnight" settings for
// Hour, Minute, Second, Milliseconds // Hour, Minute, Second, Milliseconds
midnight.add(Calendar.DAY_OF_MONTH, 1); midnight = midnight.toLocalDate().plus(1, ChronoUnit.DAYS).atStartOfDay(midnight.getZone());
__rollover.schedule(_rollTask,midnight.getTime()); __rollover.schedule(_rollTask,midnight.toInstant().toEpochMilli());
} }
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
@ -265,9 +260,9 @@ public class RolloverFileOutputStream extends FilterOutputStream
{ {
if (_retainDays>0) if (_retainDays>0)
{ {
Calendar now = Calendar.getInstance(); ZonedDateTime now = ZonedDateTime.now(this.midnight.getZone());
now.add(Calendar.DAY_OF_MONTH, (-1)*_retainDays); now.minus(_retainDays, ChronoUnit.DAYS);
long expired = now.getTimeInMillis(); long expired = now.toInstant().toEpochMilli();
File file= new File(_filename); File file= new File(_filename);
File dir = new File(file.getParent()); File dir = new File(file.getParent());