package com.maxiee.heartbeat.common; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.text.format.DateFormat; import com.maxiee.heartbeat.R; import java.util.Calendar; /** * Created by maxiee on 15-6-14. */ public class TimeUtils { private final static int WEEK_COUNT = 7; private static final int MS_ONE_SEC = 1000; private static final int MS_ONE_MIN = 60 * MS_ONE_SEC; private static final int MS_ONE_HOUR = MS_ONE_MIN * 60; public static final int MS_ONE_DAY = MS_ONE_HOUR * 24; private static final int MS_TEN_DAYS = MS_ONE_DAY * 10; private static final int MS_FOUR_DAYS = MS_ONE_DAY * 4; public static String getDate(final Context context) { Calendar cal = Calendar.getInstance(); return DateFormat.format("yyyy-MM-dd-h-mm", cal).toString(); } public static String parseTime(final Context context, final long timestamp) { SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); boolean isFullFormat = sp.getBoolean("time_full_format", false); Long timeNow = System.currentTimeMillis(); Long delta = timeNow - timestamp; if (isFullFormat || delta > MS_FOUR_DAYS) { Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(timestamp); return DateFormat.format("yyyy-MM-dd HH:mm", cal).toString(); } long count = 0; String timeUnit = ""; if (delta < MS_ONE_HOUR) { count = delta/ MS_ONE_MIN; timeUnit = context.getString(R.string.minute_ago); } else if (delta < MS_ONE_DAY) { count = delta/ MS_ONE_HOUR; timeUnit = context.getString(R.string.hour_ago); } else if (delta < MS_TEN_DAYS) { count = delta/ MS_ONE_DAY; timeUnit = context.getString(R.string.day_ago); } return String.valueOf(count) + timeUnit; } public static String parseDateDate(final Context context, final long timestamp) { Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(timestamp); return DateFormat.format("yyyy-MM-dd", cal).toString(); } public static String parseDateTime(final Context context, final long timestamp) { Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(timestamp); return DateFormat.format("HH:mm:ss", cal).toString(); } public static String parseHour(final Context context, final long timestamp) { Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(timestamp); return DateFormat.format("HH", cal).toString(); } public static String parseMinute(final Context context, final long timestamp) { Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(timestamp); return DateFormat.format("mm", cal).toString(); } public static Calendar calendarDaysBefore(int days) { Calendar curDate = Calendar.getInstance(); curDate.set( curDate.get(Calendar.YEAR), curDate.get(Calendar.MONTH), curDate.get(Calendar.DAY_OF_MONTH), 0, 0 ); curDate.add(Calendar.DAY_OF_MONTH, -1 * days); return curDate; } public static String[] getWeekDateString() { String[] ret = new String[WEEK_COUNT]; Calendar cal = Calendar.getInstance(); cal.add(Calendar.DAY_OF_MONTH, -1 * WEEK_COUNT); for (int i=0; i<WEEK_COUNT; i++) { ret[i] = DateFormat.format("MM-dd", cal).toString(); cal.add(Calendar.DAY_OF_MONTH, 1); } return ret; } public static int countDaysBetween(long earlistEventTime, long latestEventTime) { long diff = latestEventTime - earlistEventTime; return (int) (diff / MS_ONE_DAY); } public static boolean isInSameDay(long dayStart, long eventTime) { return eventTime > dayStart; } public static int getToday() { Calendar calendar = Calendar.getInstance(); return calendar.get(Calendar.DAY_OF_MONTH); } public static long getDayStart(long timestamp) { Calendar date = Calendar.getInstance(); date.setTimeInMillis(timestamp); date.set( date.get(Calendar.YEAR), date.get(Calendar.MONTH), date.get(Calendar.DAY_OF_MONTH), 0, 0); return date.getTimeInMillis(); } public static long getTodayMillis() { Calendar date = Calendar.getInstance(); date.set( date.get(Calendar.YEAR), date.get(Calendar.MONTH), date.get(Calendar.DAY_OF_MONTH), 0, 0); return date.getTimeInMillis(); } public static long updateTimestampWithDate(int year, int monthOfYear, int dayOfMonth, long timestamp) { Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(timestamp); cal.set(year, monthOfYear, dayOfMonth); return cal.getTimeInMillis(); } public static long updateTimestampWithTime(int hourOfDay, int minute, int second, long timestamp) { Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(timestamp); cal.set(Calendar.HOUR_OF_DAY, hourOfDay); cal.set(Calendar.MINUTE, minute); cal.set(Calendar.SECOND, second); return cal.getTimeInMillis(); } }