package com.moez.QKSMS.common.utils;
import android.content.Context;
import android.text.format.DateFormat;
import android.text.format.DateUtils;
import com.moez.QKSMS.QKSMSApp;
import com.moez.QKSMS.R;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public abstract class DateFormatter {
public static String getConversationTimestamp(Context context, long date) {
if (isSameDay(date)) {
return accountFor24HourTime(context, new SimpleDateFormat("h:mm a")).format(date);
} else if (isSameWeek(date)) {
return DateUtils.formatDateTime(context, date, DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_ABBREV_WEEKDAY);
} else if (isSameYear(date)) {
return DateUtils.formatDateTime(context, date, DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NO_YEAR | DateUtils.FORMAT_ABBREV_MONTH);
} else {
return DateUtils.formatDateTime(context, date, DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_MONTH);
}
}
private static boolean isSameDay(long date) {
SimpleDateFormat formatter = new SimpleDateFormat("D, y");
return formatter.format(date).equals(formatter.format(System.currentTimeMillis()));
}
private static boolean isSameWeek(long date) {
SimpleDateFormat formatter = new SimpleDateFormat("w, y");
return formatter.format(date).equals(formatter.format(System.currentTimeMillis()));
}
private static boolean isSameYear(long date) {
SimpleDateFormat formatter = new SimpleDateFormat("y");
return formatter.format(date).equals(formatter.format(System.currentTimeMillis()));
}
private static boolean isYesterday(long date) {
SimpleDateFormat formatter = new SimpleDateFormat("yD");
return Integer.parseInt(formatter.format(date)) + 1 == Integer.parseInt(formatter.format(System.currentTimeMillis()));
}
public static SimpleDateFormat accountFor24HourTime(Context context, SimpleDateFormat input) { //pass in 12 hour time. If needed, change to 24 hr.
boolean isUsing24HourTime = DateFormat.is24HourFormat(context);
if (isUsing24HourTime) {
return new SimpleDateFormat(input.toPattern().replace('h', 'H').replaceAll(" a", ""));
} else return input;
}
public static String getMessageTimestamp(Context context, long date) {
String time = ", " + accountFor24HourTime(context, new SimpleDateFormat("h:mm a")).format(date);
if (isSameDay(date)) {
return accountFor24HourTime(context, new SimpleDateFormat("h:mm a")).format(date);
} else if (isYesterday(date)) {
return context.getString(R.string.date_yesterday) + time;
} else if (isSameWeek(date)) {
return DateUtils.formatDateTime(context, date, DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_ABBREV_WEEKDAY) + time;
} else if (isSameYear(date)) {
return DateUtils.formatDateTime(context, date, DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NO_YEAR | DateUtils.FORMAT_ABBREV_MONTH) + time;
}
return DateUtils.formatDateTime(context, date, DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_MONTH) + time;
}
public static String getDate(Context context, long date) {
return DateUtils.formatDateTime(context, date, DateUtils.FORMAT_SHOW_DATE) + accountFor24HourTime(context, new SimpleDateFormat(", h:mm:ss a")).format(date);
}
public static String getRelativeTimestamp(long date) {
String relativeTimestamp = (String) DateUtils.getRelativeTimeSpanString(date);
if (relativeTimestamp.equals("in 0 minutes") || relativeTimestamp.equals("0 minutes ago"))
return QKSMSApp.getApplication().getString(com.moez.QKSMS.R.string.date_just_now);
return relativeTimestamp;
}
public static String getSummaryTimestamp(Context context, String time) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("H:mm");
Date date;
try {
date = simpleDateFormat.parse(time);
simpleDateFormat = accountFor24HourTime(context, new SimpleDateFormat("H:mm"));
time = simpleDateFormat.format(date);
} catch (ParseException e) {
e.printStackTrace();
}
return time;
}
}