[Java]對時間進行格式化:昨天、今天、明天、星期幾
阿新 • • 發佈:2019-02-13
最近在android專案中有個對時間格式化成:類似今天、昨天、星期幾,以下是整理並修改的程式碼,分享給有需要的人。
如有疑問,可留言解答。import java.text.DateFormat; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.TimeZone; public class TimeTest { private static GregorianCalendar calendar = new GregorianCalendar(); public TimeTest() { } // 提供“yyyy-mm-dd”形式的字串到毫秒的轉換 public static long getMillis(String dateString) { String[] date = dateString.split("-"); return getMillis(date[0], date[1], date[2]); } // 根據輸入的年、月、日,轉換成毫秒錶示的時間 public static long getMillis(int year, int month, int day) { GregorianCalendar calendar = new GregorianCalendar(year, month, day); return calendar.getTimeInMillis(); } // 根據輸入的年、月、日,轉換成毫秒錶示的時間 public static long getMillis(String yearString, String monthString, String dayString) { int year = Integer.parseInt(yearString); int month = Integer.parseInt(monthString)-1; int day = Integer.parseInt(dayString); return getMillis(year, month, day); } // 獲得當前時間的毫秒錶示 public static long getNow() { GregorianCalendar now = new GregorianCalendar(); return now.getTimeInMillis(); } // 根據輸入的毫秒數,獲得日期字串 public static String getDate(long millis) { calendar.setTimeInMillis(millis); return DateFormat.getDateInstance().format(calendar.getTime()); } // 根據輸入的毫秒數,獲得年份 public static int getYear(long millis) { calendar.setTimeInMillis(millis); return calendar.get(Calendar.YEAR); } // 根據輸入的毫秒數,獲得月份 public static int getMonth(long millis) { calendar.setTimeInMillis(millis); return calendar.get(Calendar.MONTH); } // 根據輸入的毫秒數,獲得日期 public static int getDay(long millis) { calendar.setTimeInMillis(millis); return calendar.get(Calendar.DATE); } // 根據輸入的毫秒數,獲得小時 public static int getHour(long millis) { calendar.setTimeInMillis(millis); return calendar.get(Calendar.HOUR_OF_DAY); } // 根據輸入的毫秒數,獲得分鐘 public static int getMinute(long millis) { calendar.setTimeInMillis(millis); return calendar.get(Calendar.MINUTE); } // 根據輸入的毫秒數,獲得秒 public static int getSecond(long millis) { calendar.setTimeInMillis(millis); return calendar.get(Calendar.SECOND); } //獲取指定毫秒數的對應星期 public static String getWeek(long millis) { calendar.setTimeInMillis(millis); String week = ""; int cweek = calendar.get(Calendar.DAY_OF_WEEK); switch (cweek) { case 1: week = "日"; break; case 2: week = "一"; break; case 3: week = "二"; break; case 4: week = "三"; break; case 5: week = "四"; break; case 6: week = "五"; break; case 7: week = "六"; break; } return week; } // 獲得今天日期 public static String getTodayData() { return getDate(getNow()); } // 獲得明天日期 public static String getTomoData() { // 86400000為一天的毫秒數 return getDate(getNow() + 86400000); } // 獲得後天日期 public static String getTheDayData() { return getDate(getNow() + 86400000 + 86400000); } // 獲得昨天日期 public static String getYesData() { return getDate(getNow() - 86400000L); } // 獲得前天日期 public static String getBeforeYesData() { return getDate(getNow() - 86400000L - 86400000L); } /** * 獲取今天時間具體內容 * @return */ public static String StringData() { final Calendar c = Calendar.getInstance(); c.setTimeZone(TimeZone.getTimeZone("GMT+8:00")); String mYear = String.valueOf(c.get(Calendar.YEAR)); // 獲取當前年份 String mMonth = String.valueOf(c.get(Calendar.MONTH) + 1);// 獲取當前月份 String mDay = String.valueOf(c.get(Calendar.DAY_OF_MONTH));// 獲取當前月份的日期號碼 String mWay = String.valueOf(c.get(Calendar.DAY_OF_WEEK)); if ("1".equals(mWay)) { mWay = "天"; } else if ("2".equals(mWay)) { mWay = "一"; } else if ("3".equals(mWay)) { mWay = "二"; } else if ("4".equals(mWay)) { mWay = "三"; } else if ("5".equals(mWay)) { mWay = "四"; } else if ("6".equals(mWay)) { mWay = "五"; } else if ("7".equals(mWay)) { mWay = "六"; } return mYear + "年" + mMonth + "月" + mDay + "日" + " 星期" + mWay; } /** * 獲取類似今天、昨天的簡單名稱 * @param date 格式為 20xx-xx-xx * @return */ public static String getCustomStr(String date){ if(getMillis(date)==getMillis(getBeforeYesData())){ return "前天"; }else if(getMillis(date)==getMillis(getYesData())){ return "昨天"; }else if(getMillis(date)==getMillis(getTodayData())){ return "今天"; }else if(getMillis(date)==getMillis(getTomoData())){ return "明天"; }else if(getMillis(date)==getMillis(getTheDayData())){ return "後天"; }else{ return "星期"+getWeek((getMillis(date))); } } public static void main(String[] args) { System.out.println("前天:" + getBeforeYesData()); System.out.println("昨天:" + getYesData()); System.out.println("今天:" + getTodayData()); System.out.println("明天:" + getTomoData()); System.out.println("後天:" + getTheDayData()); System.out.println(StringData()); System.out.println("星期" + getWeek((getMillis("2015-1-14")))); System.out.println(getCustomStr("2015-01-16")); } }