package com.fastaccess.helper; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.text.format.DateUtils; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; import java.util.TimeZone; public class ParseDateFormat { private static final ParseDateFormat INSTANCE = new ParseDateFormat(); private final Object lock = new Object(); private final DateFormat dateFormat; private ParseDateFormat() { dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ENGLISH); dateFormat.setTimeZone(TimeZone.getDefault()); } @NonNull public String format(Date date) { synchronized (lock) { return dateFormat.format(date); } } @NonNull public static CharSequence getTimeAgo(@Nullable Date parsedDate) { if (parsedDate != null) { long now = System.currentTimeMillis(); return DateUtils.getRelativeTimeSpanString(parsedDate.getTime(), now, DateUtils.SECOND_IN_MILLIS); } return "N/A"; } @NonNull public static String toGithubDate(@NonNull Date date) { return getInstance().format(date); } @NonNull public static String prettifyDate(long timestamp) { return new SimpleDateFormat("dd-MM-yyyy", Locale.ENGLISH).format(new Date(timestamp)); } @Nullable public static Date getDateFromString(@NonNull String date) { try { return new SimpleDateFormat("dd-MM-yyyy", Locale.US).parse(date); } catch (ParseException e) { e.printStackTrace(); } return null; } @NonNull private static ParseDateFormat getInstance() { return INSTANCE; } public static String getDateByDays(int days) { Calendar cal = Calendar.getInstance(); SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ENGLISH); cal.add(Calendar.DAY_OF_YEAR, days); return s.format(new Date(cal.getTimeInMillis())); } public static String getLastWeekDate() { return getDateByDays(-7); } }