【知識整理】Android 時間工具DateUtil
阿新 • • 發佈:2019-02-13
public class DateUtil { public static String[] WEEK = new String[]{"天", "一", "二", "三", "四", "五", "六"}; private static final long ONE_SECOND = 1000; private static final long ONE_MINUTE = ONE_SECOND * 60; private static final long ONE_HOUR = ONE_MINUTE * 60; private static final long ONE_DAY = ONE_HOUR * 24; /** * String 轉換 Date * * @param str * @param format * @return */ public static Date string2Date(String str, String format) { try { return new SimpleDateFormat(format).parse(str); } catch (ParseException e) { e.printStackTrace(); } return new Date(); } /** * Date(long) 轉換 String * * @param time * @param format * @return */ public static String date2String(long time, String format) { SimpleDateFormat sdf = new SimpleDateFormat(format); String s = sdf.format(time); return s; } /** * long 去除 時分秒 * 時分秒全部為0 * * @param date * @return */ public static long getYearMonthDay(long date) { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(date); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.MILLISECOND, 0); return calendar.getTimeInMillis(); } /** * 獲取目標時間和當前時間之間的差距 * * @param date * @return */ public static String getTimestampString(Date date) { Date curDate = new Date(); long splitTime = curDate.getTime() - date.getTime(); if (splitTime < (30 * ONE_DAY)) { if (splitTime < ONE_MINUTE) { return "剛剛"; } if (splitTime < ONE_HOUR) { return String.format("%d分鐘前", splitTime / ONE_MINUTE); } if (splitTime < ONE_DAY) { return String.format("%d小時前", splitTime / ONE_HOUR); } return String.format("%d天前", splitTime / ONE_DAY); } String result; result = "M月d日 HH:mm"; return (new SimpleDateFormat(result, Locale.CHINA)).format(date); } /** * 24小時制 轉換 12小時制 * * @param time * @return */ public static String time24To12(String time) { String str[] = time.split(":"); int h = Integer.valueOf(str[0]); int m = Integer.valueOf(str[1]); String sx; if (h < 1) { h = 12; sx = "上午"; } else if (h < 12) { sx = "上午"; } else if (h < 13) { sx = "下午"; } else { sx = "下午"; h -= 12; } return String.format("%d:%02d%s", h, m, sx); } /** * Date 轉換 HH * * @param date * @return */ public static String date2HH(Date date) { return new SimpleDateFormat("HH").format(date); } /** * Date 轉換 HH:mm:ss * * @param date * @return */ public static String date2HHmm(Date date) { return new SimpleDateFormat("HH:mm").format(date); } /** * Date 轉換 HH:mm:ss * * @param date * @return */ public static String date2HHmmss(Date date) { return new SimpleDateFormat("HH:mm:ss").format(date); } /** * Date 轉換 MM.dd * * @param date * @return */ public static String date2MMdd(Date date) { return new SimpleDateFormat("MM.dd").format(date); } /** * Date 轉換 yyyy.MM.dd * * @param date * @return */ public static String date2yyyyMMdd(Date date) { return new SimpleDateFormat("yyyy.MM.dd").format(date); } /** * Date 轉換 MM月dd日 星期 * * @param date * @return */ public static String date2MMddWeek(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); return new SimpleDateFormat("MM月dd日 星期").format(date) + WEEK[dayOfWeek - 1]; } /** * Date 轉換 yyyy年MM月dd日 星期 * * @param date * @return */ public static String date2yyyyMMddWeek(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); return new SimpleDateFormat("yyyy年MM月dd日 星期").format(date) + WEEK[dayOfWeek - 1]; } }