package com.cellasoft.univrapp.utils; import android.content.Context; import android.util.Log; import com.cellasoft.univrapp.BuildConfig; import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; /** * Internal helper class for date conversions. */ public final class DateUtils { /** * @see <a href="http://www.ietf.org/rfc/rfc0822.txt">RFC 822</a> */ public static final String RFC822 = "EEE, dd MMM yyyy HH:mm:ss Z"; private static final ThreadLocal<DateFormat> formatRFC822 = new ThreadLocal<DateFormat>() { protected synchronized DateFormat initialValue() { return new SimpleDateFormat(RFC822, Locale.ENGLISH); } }; public static final String NEWS_DATE_FORMAT = "d MMM',' yyyy 'at' HH:mm a"; private static final ThreadLocal<DateFormat> dateFormat = new ThreadLocal<DateFormat>() { protected synchronized DateFormat initialValue() { return new SimpleDateFormat(NEWS_DATE_FORMAT, Locale.getDefault()); } }; private static final String TAG = DateUtils.class.getSimpleName(); /* Hide constructor */ private DateUtils() { } /** * Parses string as an RFC 822 date/time. * * @throws Exception * @throws RSSFault if the string is not a valid RFC 822 date/time */ public static Date parseRfc822(String date) { try { return formatRFC822.get().parse(date.trim()); } catch (ParseException e) { if (BuildConfig.DEBUG) Log.e(TAG, "No parser date " + date); return new Date(); } } public static String formatTimeMillis(Context context, long timeMillis) { StringBuilder sb = new StringBuilder(); if (timeMillis > 0) { try { sb.append(android.text.format.DateUtils .getRelativeDateTimeString(context, timeMillis, android.text.format.DateUtils.MINUTE_IN_MILLIS, android.text.format.DateUtils.WEEK_IN_MILLIS, android.text.format.DateUtils.FORMAT_ABBREV_ALL)); } catch (Throwable e) { sb.append(dateFormat.get().format(new Date(timeMillis))); } } return sb.toString(); } public static String formatDate(Date date) { StringBuilder sb = new StringBuilder(); if (date != null) { try { sb.append(android.text.format.DateUtils.formatSameDayTime( date.getTime(), new Timestamp(System.currentTimeMillis()).getTime(), DateFormat.MEDIUM, DateFormat.SHORT)); } catch (Throwable e) { sb.append(dateFormat.get().format(date)); } } return sb.toString(); } }