package tellh.com.gitclub.common.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.TimeZone; import java.util.concurrent.TimeUnit; import tellh.com.gitclub.R; /** * Created by tlh on 2016/9/9 :) */ public class DateUtils { public static final List<Long> times = Arrays.asList( TimeUnit.DAYS.toMillis(365), TimeUnit.DAYS.toMillis(30), TimeUnit.DAYS.toMillis(1), TimeUnit.HOURS.toMillis(1), TimeUnit.MINUTES.toMillis(1), TimeUnit.SECONDS.toMillis(1)); public static final List<String> timesString = Arrays.asList(Utils.getString(R.string.date_year), Utils.getString(R.string.date_month), Utils.getString(R.string.date_day), Utils.getString(R.string.date_hour), Utils.getString(R.string.date_minute), Utils.getString(R.string.date_sec)); private static SimpleDateFormat format; static { format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); //fix the time different 时差 format.setTimeZone(TimeZone.getTimeZone("GMT")); } public static Date getDate(String date) { try { return format.parse(date); } catch (ParseException e) { return new Date(); } } public static String timeAgo(String rawDate) { Date from = getDate(rawDate); Calendar cal = Calendar.getInstance(); cal.setTime(from); long past = cal.getTimeInMillis(); cal.setTime(new Date()); long now = cal.getTimeInMillis(); return timeAgo(now - past); } public static String timeAgo(long duration) { StringBuilder result = new StringBuilder(); for (int i = 0; i < times.size(); i++) { Long current = times.get(i); long temp = duration / current; if (temp > 0) { result.append(temp).append(" ").append(timesString.get(i)).append(temp > 1 ? "s" : "").append(" ago"); break; } } if ("".equals(result.toString())) return "0 second ago"; else return result.toString(); } }