用Java實現處理日期的工具類——常用日期處理方法
阿新 • • 發佈:2022-04-29
日期處理是開發過程中經常遇到的問題,以下是總結了開發中常用的方法,程式碼如下:
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * * @專案名 ssh * @功能 處理日期的工具類 * @類名 DateUtils * @作者 Java自學通 * @日期 Aug 30, 20113:35:30 PM * @版本 1.0 */ public final class DateUtils { private static SimpleDateFormat format = new SimpleDateFormat( "yyyy年MM月dd日HH時mm分ss�?"); private DateUtils() { } public static SimpleDateFormat getFormat() { return format; } /** * 根據日期得到星期中的天數 * * @param date * 日期 * @return 星期�? */ public static String formatWeek(String date) { SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); Date d = null; try { d = sd.parse(date); } catch (ParseException e) { e.printStackTrace(); } return getFormatWeek(d); } /** * 設定預設格式�? * * @param format * 格式 */ public static void setFormat(SimpleDateFormat format) { DateUtils.format = format; } /** * 得到當前日期 * * @return */ public static Date getNowDate() { return new Date(); } /** * 設定預設格式 * * @param format * 格式 */ public static void setFormat(String format) { DateUtils.format = new SimpleDateFormat(format); } /** * 得到格式化後的日�? * * @param date * 日期 * @return 日期 */ public static String getFormatDate(Date date) { return format.format(date); } /** * 得到格式化後的日�? * * @param date * @param foramt * @return */ public static String getFormatDate(Date date, String foramt) { return new SimpleDateFormat(foramt).format(date); } /** * 得到格式化後的日�? * * @param date * @return * @throws ParseException */ public static String getFormatDate(String date) throws ParseException { return format.format(format.parse(date)); } /** * 得到與當前小時間�? * * @param date * 日期 * @return */ public static long getHourSpacing(Date date) { long hour = 60l * 60l * 1000l; return (new Date().getTime() - date.getTime()) / hour; } /** * 得到兩個日期的小時間�? * * @param before * 之前的日�? * @param after * 之後的日�? * @return 小時間隔 */ public static long getHourSpacing(Date before, Date after) { long hour = 60l * 60l * 1000l; return (after.getTime() - before.getTime()) / hour; } /** * 得到與當前日期小時間�? * * @param date * @param fmt * @return * @throws ParseException */ public static long getHourSpacing(String date, String fmt) throws ParseException { long hour = 60l * 60l * 1000l; setFormat(fmt); Date temp = format.parse(date); return (new Date().getTime() - temp.getTime()) / hour; } public static String passTime(Date oldTime) throws Exception { long between = DateUtils.countTime(oldTime); long day1 = between / (24 * 3600); long hour1 = between % (24 * 3600) / 3600; long minute1 = between % 3600 / 60; long second1 = between; String result = "剛剛"; if (day1 == 0 && hour1 == 0 && minute1 == 0 && second1 != 0) { result = String.valueOf(second1) + "秒前"; } if (day1 == 0 && hour1 == 0 && minute1 != 0) { result = String.valueOf(minute1) + "分前"; } if (day1 == 0 && hour1 != 0) { result = String.valueOf(hour1) + "小時前"; } if (day1 != 0) { result = String.valueOf(day1) + "天前"; } return result; } // 計算時間; private static long countTime(Date oldTime) throws Exception { SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); java.util.Date begin = dfs.parse(dfs.format(oldTime).toString()); java.util.Date end = dfs.parse(dfs.format(new Date()).toString()); long between = (end.getTime() - begin.getTime()) / 1000;// 除以1000是為了轉換成秒 return between; } /** * 得到時間間隔 * * @param before * @param after * @param timeMillis * @return */ public static long getTimeSpacing(Date before, Date after, long timeMillis) { return before.getTime() - after.getTime() > 0 ? (before.getTime() - after .getTime()) / timeMillis : (after.getTime() - before.getTime()) / timeMillis; } /** * 得到時間間隔 * * @param date * @param timeMillis * @return */ public static long getTimeSpacing(Date date, long timeMillis) { Date da = new Date(); return da.getTime() - date.getTime() > 0 ? (da.getTime() - date .getTime()) / timeMillis : (date.getTime() - da.getTime()) / timeMillis; } /** * 根據年月得到天數 * * @param year * @param month * @return */ public static int daysOfMonth(int year, int month) { int days[] = { 31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; if (2 == month && 0 == (year % 4) && (0 != (year % 100) || 0 == (year % 400))) { days[2] = 29; } return (days[month]); } /** * 將字元格式轉換成日期格式 * * @param content * @param format * @return * @throws ParseException */ public static Date formatDate(String content, String format) throws ParseException { SimpleDateFormat sf = new SimpleDateFormat(format); return sf.parse(content); } /** * 格式轉換 * * @param content * @param format1 * @return */ public static String getFormatDate(String content, String format1) { SimpleDateFormat sf = new SimpleDateFormat(format1); Date date; try { date = format.parse(content); } catch (ParseException e) { date = new Date(); } return sf.format(date); } /** * 根據日期得到星期�? * * @param date * 日期 * @return 星期�? */ public static String getFormatWeek(Date date) { SimpleDateFormat sdw = new SimpleDateFormat("E"); return sdw.format(date); } /** * 根據當前時間獲得昨天日期; * * @return */ public static Date getYesterday(Date time) { Calendar cd = Calendar.getInstance(); cd.setTime(time); cd.add(Calendar.DATE, -1); return cd.getTime(); } /** * 根據當前時間獲得明天日期; * * @return */ public static Date getTomorrow(Date time) { Calendar cd = Calendar.getInstance(); cd.setTime(time); cd.add(Calendar.DATE, 1); return cd.getTime(); } /** * 當前時間加的天數; * * @param time * 當前時間; * @param day * 相加的天數 * @return */ public static Date addNowTimeDay(Date time, int day) { SimpleDateFormat e = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date date = time; Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(calendar.DAY_OF_MONTH, +day); date = calendar.getTime(); return date; } }