/* * Copyright (c) 2012 Hai Bison * * See the file LICENSE at the root directory of this project for copying * permission. */ package group.pals.android.lib.ui.filechooser.utils; import group.pals.android.lib.ui.filechooser.R; import group.pals.android.lib.ui.filechooser.prefs.DisplayPrefs.FileTimeDisplay; import java.util.Calendar; import android.content.Context; /** * Date utilities. * * @author Hai Bison * @since v4.7 beta * */ public class DateUtils { /** * Used with format methods of {@link android.text.format.DateUtils}. For * example: "10:01 AM". */ public static final int _FormatShortTime = android.text.format.DateUtils.FORMAT_12HOUR | android.text.format.DateUtils.FORMAT_SHOW_TIME; /** * Used with format methods of {@link android.text.format.DateUtils}. For * example: "Oct 01". */ public static final int _FormatMonthAndDay = android.text.format.DateUtils.FORMAT_ABBREV_MONTH | android.text.format.DateUtils.FORMAT_SHOW_DATE | android.text.format.DateUtils.FORMAT_NO_YEAR; /** * Used with format methods of {@link android.text.format.DateUtils}. For * example: "2012". */ public static final int _FormatYear = android.text.format.DateUtils.FORMAT_SHOW_YEAR; /** * Formats date. * * @param context * {@link Context}. * @param millis * time in milliseconds. * @param fileTimeDisplay * {@link FileTimeDisplay}. * @return the formatted string */ public static String formatDate(Context context, long millis, FileTimeDisplay fileTimeDisplay) { Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(millis); return formatDate(context, cal, fileTimeDisplay); }// formatDate() /** * Formats date. * * @param context * {@link Context}. * @param date * {@link Calendar}. * @param fileTimeDisplay * {@link FileTimeDisplay}. * @return the formatted string, for local human reading. */ public static String formatDate(Context context, Calendar date, FileTimeDisplay fileTimeDisplay) { final Calendar _yesterday = Calendar.getInstance(); _yesterday.add(Calendar.DAY_OF_YEAR, -1); String res; if (android.text.format.DateUtils.isToday(date.getTimeInMillis())) { res = android.text.format.DateUtils.formatDateTime(context, date.getTimeInMillis(), _FormatShortTime); }// today else if (date.get(Calendar.YEAR) == _yesterday.get(Calendar.YEAR) && date.get(Calendar.DAY_OF_YEAR) == _yesterday.get(Calendar.DAY_OF_YEAR)) { res = String.format("%s, %s", context.getString(R.string.afc_yesterday), android.text.format.DateUtils.formatDateTime(context, date.getTimeInMillis(), _FormatShortTime)); }// yesterday else if (date.get(Calendar.YEAR) == _yesterday.get(Calendar.YEAR)) { if (fileTimeDisplay.isShowTimeForOldDaysThisYear()) res = android.text.format.DateUtils.formatDateTime(context, date.getTimeInMillis(), _FormatShortTime | _FormatMonthAndDay); else res = android.text.format.DateUtils.formatDateTime(context, date.getTimeInMillis(), _FormatMonthAndDay); }// this year else { if (fileTimeDisplay.isShowTimeForOldDays()) res = android.text.format.DateUtils.formatDateTime(context, date.getTimeInMillis(), _FormatShortTime | _FormatMonthAndDay | _FormatYear); else res = android.text.format.DateUtils.formatDateTime(context, date.getTimeInMillis(), _FormatMonthAndDay | _FormatYear); }// other years (maybe older or newer than this year) return res; }// formatDate() }