calculateRetentionDate static method
Calculates retention days using UTC calendar date difference. This counts the number of calendar days between install and now, not the number of 24-hour periods.
Implementation
static int calculateRetentionDate(int installDayUtc, int nowUtcMillis) {
if (installDayUtc == -1) return -1;
try {
final year = installDayUtc ~/ 10000;
final month = (installDayUtc % 10000) ~/ 100;
final day = installDayUtc % 100;
final installDate = DateTime.utc(year, month, day);
final nowDate = DateTime.fromMillisecondsSinceEpoch(nowUtcMillis, isUtc: true);
final nowDateOnly = DateTime.utc(nowDate.year, nowDate.month, nowDate.day);
final days = nowDateOnly.difference(installDate).inDays;
return days < 0 ? 0 : days;
} catch (_) {
return -1;
}
}