1. 程式人生 > 其它 >用Java實現處理日期的工具類——常用日期處理方法

用Java實現處理日期的工具類——常用日期處理方法

日期處理是開發過程中經常遇到的問題,以下是總結了開發中常用的方法,程式碼如下:

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;
}
}