340 lines
13 KiB
Java
340 lines
13 KiB
Java
|
package com.discord.utilities.time;
|
||
|
|
||
|
import android.content.Context;
|
||
|
import android.text.format.DateUtils;
|
||
|
import c.a.l.b;
|
||
|
import c.d.b.a.a;
|
||
|
import com.discord.utilities.locale.LocaleManager;
|
||
|
import d0.z.d.m;
|
||
|
import java.text.DateFormat;
|
||
|
import java.text.DateFormatSymbols;
|
||
|
import java.text.ParseException;
|
||
|
import java.text.SimpleDateFormat;
|
||
|
import java.util.Calendar;
|
||
|
import java.util.Date;
|
||
|
import java.util.Locale;
|
||
|
import java.util.TimeZone;
|
||
|
import java.util.concurrent.TimeUnit;
|
||
|
/* compiled from: TimeUtils.kt */
|
||
|
public final class TimeUtils {
|
||
|
private static final String DATE_FORMAT_DISCORD_API = "yyyy-MM-dd'T'HH:mm:ss";
|
||
|
public static final TimeUtils INSTANCE = new TimeUtils();
|
||
|
private static final LocaleManager localeManager = new LocaleManager();
|
||
|
|
||
|
/* compiled from: TimeUtils.kt */
|
||
|
public static final class UTCFormat {
|
||
|
public static final UTCFormat INSTANCE = new UTCFormat();
|
||
|
public static final String LONG = "yyyy-MM-dd'T'HH:mm:ss";
|
||
|
public static final String SHORT = "yyyy-MM-dd";
|
||
|
|
||
|
private UTCFormat() {
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private TimeUtils() {
|
||
|
}
|
||
|
|
||
|
public static final long addDaysToDate(String str, int i) {
|
||
|
Calendar calendar = toCalendar(parseUTCDate(str));
|
||
|
calendar.add(5, i);
|
||
|
return calendar.getTimeInMillis();
|
||
|
}
|
||
|
|
||
|
public static final String currentTimeUTCDateString(Clock clock) {
|
||
|
m.checkNotNullParameter(clock, "clock");
|
||
|
return toUTCDateTime$default(Long.valueOf(clock.currentTimeMillis()), null, 2, null);
|
||
|
}
|
||
|
|
||
|
public static final int getMonthsBetweenDates(Date date, Date date2) {
|
||
|
m.checkNotNullParameter(date, "firstDate");
|
||
|
m.checkNotNullParameter(date2, "secondDate");
|
||
|
Calendar instance = Calendar.getInstance();
|
||
|
if (date.before(date2)) {
|
||
|
m.checkNotNullExpressionValue(instance, "calendar");
|
||
|
instance.setTime(date);
|
||
|
date = date2;
|
||
|
} else {
|
||
|
m.checkNotNullExpressionValue(instance, "calendar");
|
||
|
instance.setTime(date2);
|
||
|
}
|
||
|
int i = 0;
|
||
|
while (instance.getTime().before(date)) {
|
||
|
instance.add(2, 1);
|
||
|
i++;
|
||
|
}
|
||
|
return i - 1;
|
||
|
}
|
||
|
|
||
|
public static final String getReadableTimeString(Context context, String str) {
|
||
|
m.checkNotNullParameter(context, "context");
|
||
|
return toReadableTimeString$default(context, parseUTCDate(str), null, 4, null).toString();
|
||
|
}
|
||
|
|
||
|
public static final long millisToSnowflake(long j) {
|
||
|
return (j - 1420070400000L) << 22;
|
||
|
}
|
||
|
|
||
|
public static final long parseSnowflake(Long l) {
|
||
|
if (l == null) {
|
||
|
l = 0L;
|
||
|
}
|
||
|
return (l.longValue() >> 22) + 1420070400000L;
|
||
|
}
|
||
|
|
||
|
public static final long parseUTCDate(String str) {
|
||
|
if (str == null) {
|
||
|
return 0;
|
||
|
}
|
||
|
try {
|
||
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ROOT);
|
||
|
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
|
||
|
Date parse = simpleDateFormat.parse(str);
|
||
|
if (parse != null) {
|
||
|
return parse.getTime();
|
||
|
}
|
||
|
return 0;
|
||
|
} catch (ArrayIndexOutOfBoundsException | NumberFormatException | ParseException unused) {
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private final String renderUtcDate(String str, Locale locale, String str2, DateFormat dateFormat, int i) {
|
||
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(str2, locale);
|
||
|
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
|
||
|
Date parse = simpleDateFormat.parse(str);
|
||
|
Calendar instance = Calendar.getInstance(locale);
|
||
|
m.checkNotNullExpressionValue(instance, "calendar");
|
||
|
if (parse == null) {
|
||
|
parse = new Date();
|
||
|
}
|
||
|
instance.setTime(parse);
|
||
|
instance.add(5, i);
|
||
|
String format = dateFormat.format(instance.getTime());
|
||
|
m.checkNotNullExpressionValue(format, "outputFormat.format(offsetDate)");
|
||
|
return format;
|
||
|
}
|
||
|
|
||
|
public static /* synthetic */ String renderUtcDate$default(TimeUtils timeUtils, long j, Context context, int i, int i2, Object obj) {
|
||
|
if ((i2 & 4) != 0) {
|
||
|
i = 2;
|
||
|
}
|
||
|
return timeUtils.renderUtcDate(j, context, i);
|
||
|
}
|
||
|
|
||
|
public static /* synthetic */ String renderUtcDate$default(TimeUtils timeUtils, String str, Context context, String str2, DateFormat dateFormat, int i, int i2, Object obj) {
|
||
|
if ((i2 & 4) != 0) {
|
||
|
str2 = "yyyy-MM-dd'T'HH:mm:ss";
|
||
|
}
|
||
|
if ((i2 & 8) != 0) {
|
||
|
dateFormat = android.text.format.DateFormat.getMediumDateFormat(context);
|
||
|
m.checkNotNullExpressionValue(dateFormat, "DateFormat.getMediumDateFormat(context)");
|
||
|
}
|
||
|
return timeUtils.renderUtcDate(str, context, str2, dateFormat, (i2 & 16) != 0 ? 0 : i);
|
||
|
}
|
||
|
|
||
|
public static /* synthetic */ String renderUtcDate$default(TimeUtils timeUtils, String str, Locale locale, String str2, DateFormat dateFormat, int i, int i2, Object obj) {
|
||
|
if ((i2 & 4) != 0) {
|
||
|
str2 = "yyyy-MM-dd'T'HH:mm:ss";
|
||
|
}
|
||
|
return timeUtils.renderUtcDate(str, locale, str2, dateFormat, (i2 & 16) != 0 ? 0 : i);
|
||
|
}
|
||
|
|
||
|
public static /* synthetic */ String renderUtcDateTime$default(TimeUtils timeUtils, String str, Context context, String str2, int i, int i2, int i3, Object obj) {
|
||
|
if ((i3 & 4) != 0) {
|
||
|
str2 = "yyyy-MM-dd'T'HH:mm:ss";
|
||
|
}
|
||
|
return timeUtils.renderUtcDateTime(str, context, str2, i, i2);
|
||
|
}
|
||
|
|
||
|
public static final Calendar toCalendar(long j) {
|
||
|
Calendar instance = Calendar.getInstance(Locale.ROOT);
|
||
|
m.checkNotNullExpressionValue(instance, "calendar");
|
||
|
instance.setTimeInMillis(j);
|
||
|
return instance;
|
||
|
}
|
||
|
|
||
|
public static /* synthetic */ CharSequence toFriendlyString$default(TimeUtils timeUtils, long j, long j2, String str, String str2, int i, Object obj) {
|
||
|
if ((i & 2) != 0) {
|
||
|
j2 = ClockFactory.get().currentTimeMillis();
|
||
|
}
|
||
|
return timeUtils.toFriendlyString(j, j2, (i & 4) != 0 ? null : str, (i & 8) != 0 ? null : str2);
|
||
|
}
|
||
|
|
||
|
public static /* synthetic */ CharSequence toFriendlyStringSimple$default(TimeUtils timeUtils, long j, String str, String str2, int i, Object obj) {
|
||
|
if ((i & 2) != 0) {
|
||
|
str = null;
|
||
|
}
|
||
|
if ((i & 4) != 0) {
|
||
|
str2 = null;
|
||
|
}
|
||
|
return timeUtils.toFriendlyStringSimple(j, str, str2);
|
||
|
}
|
||
|
|
||
|
public static final CharSequence toReadableTimeString(Context context, long j, Clock clock) {
|
||
|
m.checkNotNullParameter(context, "context");
|
||
|
m.checkNotNullParameter(clock, "clock");
|
||
|
LocaleManager localeManager2 = localeManager;
|
||
|
if (m.areEqual(localeManager2.getPrimaryLocale(context).getLanguage(), "en")) {
|
||
|
return INSTANCE.toReadableTimeStringEN(localeManager2.getPrimaryLocale(context), j, clock);
|
||
|
}
|
||
|
CharSequence relativeDateTimeString = DateUtils.getRelativeDateTimeString(context, j, 86400000, 604800000, 131072);
|
||
|
m.checkNotNullExpressionValue(relativeDateTimeString, "DateUtils.getRelativeDat…RMAT_NUMERIC_DATE\n )");
|
||
|
return relativeDateTimeString;
|
||
|
}
|
||
|
|
||
|
public static /* synthetic */ CharSequence toReadableTimeString$default(Context context, long j, Clock clock, int i, Object obj) {
|
||
|
if ((i & 4) != 0) {
|
||
|
clock = ClockFactory.get();
|
||
|
}
|
||
|
return toReadableTimeString(context, j, clock);
|
||
|
}
|
||
|
|
||
|
public static /* synthetic */ String toReadableTimeStringEN$default(TimeUtils timeUtils, Locale locale, long j, Clock clock, int i, Object obj) {
|
||
|
if ((i & 4) != 0) {
|
||
|
clock = ClockFactory.get();
|
||
|
}
|
||
|
return timeUtils.toReadableTimeStringEN(locale, j, clock);
|
||
|
}
|
||
|
|
||
|
public static final String toUTCDateTime(Long l, String str) {
|
||
|
m.checkNotNullParameter(str, "format");
|
||
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(str, Locale.ROOT);
|
||
|
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
|
||
|
if (l == null) {
|
||
|
return null;
|
||
|
}
|
||
|
return simpleDateFormat.format(new Date(l.longValue()));
|
||
|
}
|
||
|
|
||
|
public static /* synthetic */ String toUTCDateTime$default(Long l, String str, int i, Object obj) {
|
||
|
if ((i & 2) != 0) {
|
||
|
str = "yyyy-MM-dd'T'HH:mm:ss";
|
||
|
}
|
||
|
return toUTCDateTime(l, str);
|
||
|
}
|
||
|
|
||
|
public final int getDaysFromMillis(long j) {
|
||
|
long j2 = (long) 86400000;
|
||
|
if (j < j2) {
|
||
|
return 0;
|
||
|
}
|
||
|
return (int) (j / j2);
|
||
|
}
|
||
|
|
||
|
public final int getHoursFromMillis(long j) {
|
||
|
long j2 = (long) 3600000;
|
||
|
if (j < j2) {
|
||
|
return 0;
|
||
|
}
|
||
|
return (int) (j / j2);
|
||
|
}
|
||
|
|
||
|
public final String getLocalizedMonthName(int i, Context context) {
|
||
|
m.checkNotNullParameter(context, "context");
|
||
|
String str = new DateFormatSymbols(localeManager.getPrimaryLocale(context)).getMonths()[i - 1];
|
||
|
m.checkNotNullExpressionValue(str, "DateFormatSymbols(locale…xt)).months[monthInt - 1]");
|
||
|
return str;
|
||
|
}
|
||
|
|
||
|
public final int getMinutesFromMillis(long j) {
|
||
|
long j2 = (long) 60000;
|
||
|
if (j < j2) {
|
||
|
return 0;
|
||
|
}
|
||
|
return (int) (j / j2);
|
||
|
}
|
||
|
|
||
|
public final int getSecondsFromMillis(long j) {
|
||
|
long j2 = (long) 1000;
|
||
|
if (j < j2) {
|
||
|
return 0;
|
||
|
}
|
||
|
return (int) (j / j2);
|
||
|
}
|
||
|
|
||
|
public final String renderUtcDate(long j, Context context, int i) {
|
||
|
m.checkNotNullParameter(context, "context");
|
||
|
String format = DateFormat.getDateInstance(i, localeManager.getPrimaryLocale(context)).format(Long.valueOf(j));
|
||
|
m.checkNotNullExpressionValue(format, "formatter.format(unixTimeMillis)");
|
||
|
return format;
|
||
|
}
|
||
|
|
||
|
public final String renderUtcDate(String str, Context context, String str2, DateFormat dateFormat, int i) {
|
||
|
m.checkNotNullParameter(str, "utcDate");
|
||
|
m.checkNotNullParameter(context, "context");
|
||
|
m.checkNotNullParameter(str2, "inputFormat");
|
||
|
m.checkNotNullParameter(dateFormat, "outputFormat");
|
||
|
return renderUtcDate(str, localeManager.getPrimaryLocale(context), str2, dateFormat, i);
|
||
|
}
|
||
|
|
||
|
public final String renderUtcDateTime(String str, Context context, String str2, int i, int i2) {
|
||
|
m.checkNotNullParameter(str, "utcDateTime");
|
||
|
m.checkNotNullParameter(context, "context");
|
||
|
m.checkNotNullParameter(str2, "inputFormat");
|
||
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(str2, localeManager.getPrimaryLocale(context));
|
||
|
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
|
||
|
Date parse = simpleDateFormat.parse(str);
|
||
|
if (parse == null) {
|
||
|
parse = new Date();
|
||
|
}
|
||
|
String format = DateFormat.getDateTimeInstance(i, i2).format(parse);
|
||
|
m.checkNotNullExpressionValue(format, "outputDateFormatInstance.format(date)");
|
||
|
return format;
|
||
|
}
|
||
|
|
||
|
public final CharSequence toFriendlyString(long j, long j2, String str, String str2) {
|
||
|
long j3 = j2 - j;
|
||
|
if (TimeUnit.MILLISECONDS.toDays(j3) == 0) {
|
||
|
return toFriendlyStringSimple(j3, str, str2);
|
||
|
}
|
||
|
CharSequence relativeTimeSpanString = DateUtils.getRelativeTimeSpanString(j, j2, 86400000, 131072);
|
||
|
m.checkNotNullExpressionValue(relativeTimeSpanString, "DateUtils.getRelativeTim…AT_NUMERIC_DATE\n )");
|
||
|
return relativeTimeSpanString;
|
||
|
}
|
||
|
|
||
|
public final CharSequence toFriendlyStringSimple(long j, String str, String str2) {
|
||
|
String formatElapsedTime = DateUtils.formatElapsedTime(TimeUnit.MILLISECONDS.toSeconds(Math.max(0L, j)));
|
||
|
if (str == null || str2 == null) {
|
||
|
m.checkNotNullExpressionValue(formatElapsedTime, "elapsedTime");
|
||
|
return formatElapsedTime;
|
||
|
}
|
||
|
return b.f(str, new Object[0], new TimeUtils$toFriendlyStringSimple$1(formatElapsedTime, str2));
|
||
|
}
|
||
|
|
||
|
public final String toReadableTimeStringEN(Locale locale, long j, Clock clock) {
|
||
|
m.checkNotNullParameter(locale, "locale");
|
||
|
m.checkNotNullParameter(clock, "clock");
|
||
|
if (!m.areEqual(locale.getLanguage(), "en")) {
|
||
|
return "";
|
||
|
}
|
||
|
DateFormat timeInstance = DateFormat.getTimeInstance(3, locale);
|
||
|
DateFormat dateTimeInstance = DateFormat.getDateTimeInstance(2, 3, locale);
|
||
|
Calendar calendar = toCalendar(clock.currentTimeMillis());
|
||
|
calendar.set(11, 0);
|
||
|
calendar.set(12, 0);
|
||
|
calendar.set(13, 0);
|
||
|
calendar.set(14, 0);
|
||
|
calendar.add(5, 1);
|
||
|
if (j > calendar.getTimeInMillis()) {
|
||
|
String format = dateTimeInstance.format(Long.valueOf(j));
|
||
|
m.checkNotNullExpressionValue(format, "formatterDateTime.format(unixTimeMillis)");
|
||
|
return format;
|
||
|
}
|
||
|
calendar.add(5, -1);
|
||
|
if (j > calendar.getTimeInMillis()) {
|
||
|
StringBuilder L = a.L("Today at ");
|
||
|
L.append(timeInstance.format(Long.valueOf(j)));
|
||
|
return L.toString();
|
||
|
}
|
||
|
calendar.add(5, -1);
|
||
|
if (j > calendar.getTimeInMillis()) {
|
||
|
StringBuilder L2 = a.L("Yesterday at ");
|
||
|
L2.append(timeInstance.format(Long.valueOf(j)));
|
||
|
return L2.toString();
|
||
|
}
|
||
|
String format2 = dateTimeInstance.format(Long.valueOf(j));
|
||
|
m.checkNotNullExpressionValue(format2, "formatterDateTime.format(unixTimeMillis)");
|
||
|
return format2;
|
||
|
}
|
||
|
}
|