/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.mozstumbler.client;
import android.annotation.SuppressLint;
import android.content.res.Resources;
import org.mozilla.mozstumbler.R;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
public final class DateTimeUtils {
private static final DateFormat sLocaleFormatDateTime = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
private static final DateFormat sLocaleFormatDate = DateFormat.getDateInstance(DateFormat.SHORT);
private static final DateFormat sISO8601Format = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
static {
sISO8601Format.setTimeZone(TimeZone.getTimeZone("UTC"));
}
private DateTimeUtils() {
}
@SuppressLint("SimpleDateFormat")
static String formatDate(Date date) {
return sISO8601Format.format(date);
}
public static long removeDay(long time) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(time);
c.set(Calendar.DAY_OF_MONTH, 1);
return c.getTimeInMillis();
}
public static String formatTime(long time) {
return formatDate(new Date(time));
}
public static String formatTimeForLocale(long time) {
return sLocaleFormatDateTime.format(time);
}
public static String prettyPrintTimeDiff(long time, Resources res) {
final long seconds = (System.currentTimeMillis() - time) / 1000;
if (seconds < 0) {
return DateTimeUtils.formatTimeForLocale(time);
} else if (seconds < 60) {
return res.getQuantityString(R.plurals.time_diff_seconds, (int) seconds, seconds);
}
final long minutes = (long) Math.floor(seconds / 60.0);
if (minutes <= 60) {
return res.getQuantityString(R.plurals.time_diff_minutes, (int) minutes, minutes);
}
final long hours = (long) Math.floor(minutes / 60.0);
if (hours <= 24) {
return res.getQuantityString(R.plurals.time_diff_hours, (int) hours, hours);
}
final long days = (long) Math.floor(hours / 24.0);
if (days <= 7) {
return res.getQuantityString(R.plurals.time_diff_days, (int) days, days);
}
return sLocaleFormatDate.format(time);
}
}