Merge "Fix Y2038 issue in DateUtils.isToday()"

This commit is contained in:
Neil Fuller
2019-08-21 18:34:54 +00:00
committed by Android (Google) Code Review

View File

@@ -32,6 +32,9 @@ import libcore.icu.LocaleData;
import libcore.icu.RelativeDateTimeFormatter;
import java.io.IOException;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Calendar;
import java.util.Date;
import java.util.Formatter;
@@ -502,17 +505,21 @@ public class DateUtils
* @return true if the supplied when is today else false
*/
public static boolean isToday(long when) {
Time time = new Time();
time.set(when);
return isSameDate(when, System.currentTimeMillis());
}
int thenYear = time.year;
int thenMonth = time.month;
int thenMonthDay = time.monthDay;
private static boolean isSameDate(long oneMillis, long twoMillis) {
ZoneId zoneId = ZoneId.systemDefault();
time.set(System.currentTimeMillis());
return (thenYear == time.year)
&& (thenMonth == time.month)
&& (thenMonthDay == time.monthDay);
Instant oneInstant = Instant.ofEpochMilli(oneMillis);
LocalDateTime oneLocalDateTime = LocalDateTime.ofInstant(oneInstant, zoneId);
Instant twoInstant = Instant.ofEpochMilli(twoMillis);
LocalDateTime twoLocalDateTime = LocalDateTime.ofInstant(twoInstant, zoneId);
return (oneLocalDateTime.getYear() == twoLocalDateTime.getYear())
&& (oneLocalDateTime.getMonthValue() == twoLocalDateTime.getMonthValue())
&& (oneLocalDateTime.getDayOfMonth() == twoLocalDateTime.getDayOfMonth());
}
/**