DateUtils常⽤的⽇期⼯具⽅法整理
在开发过程中经常要和Date打交道,所以这⾥整理了⼀些⾃⼰常⽤的与⽇期相关的⼯具⽅法
public class DateUtils extends org.apachemons.lang3.time.DateUtils {
private static String[] parsePatterns = { "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss",
"yyyy.MM.dd HH:mm", "yyyy.MM" };
/**
* 得到当前⽇期字符串格式(yyyy-MM-dd)
*/
public static String getDate() {
return getDate("yyyy-MM-dd HH:mm:ss");
}
/**
* 得到当前⽇期字符串格式(yyyy-MM-dd) pattern可以为:"yyyy-MM-dd" "HH:mm:ss" "E"
*/
public static String getDate(String pattern) {
return DateFormatUtils.format(new Date(), pattern);
}
/**
* 得到⽇期字符串默认格式(yyyy-MM-dd) pattern可以为:"yyyy-MM-dd" "HH:mm:ss" "E"
*/
public static String formatDate(Date date, pattern) {
if (date == null) {
return null;
}
String formatDate = null;
if (pattern != null && pattern.length > 0) {
formatDate = DateFormatUtils.format(date, pattern[0].toString());
} else {
formatDate = DateFormatUtils.format(date, "yyyy-MM-dd");
}
return formatDate;
}
/
**
* 得到⽇期时间字符串,转换格式(yyyy-MM-dd HH:mm:ss)
*/
public static String formatDateTime(Date date) {
return formatDate(date, "yyyy-MM-dd HH:mm:ss");
}
/**
* 得到当前时间字符串格式(HH:mm:ss)
*/
public static String getTime() {
return formatDate(new Date(), "HH:mm:ss");
}
/**
* 得到当前⽇期和时间字符串格式(yyyy-MM-dd HH:mm:ss)
*/
public static String getDateTime() {
return formatDate(new Date(), "yyyy-MM-dd HH:mm:ss");
}
/**
* 得到当前年份字符串格式(yyyy)
*/
public static String getYear() {
return formatDate(new Date(), "yyyy");
}
/**
* 得到当前⽉份字符串格式(MM)
*/
public static String getMonth() {
return formatDate(new Date(), "MM");
}
/**
* 得到当天字符串格式(dd)
*/
public static String getDay() {
return formatDate(new Date(), "dd");
}
/**
* 得到当前星期字符串格式(E)星期⼏
*/
public static String getWeek() {
return formatDate(new Date(), "E");
}
/**
* ⽇期型字符串转化为⽇期格式
* { "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm",    * "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm",    * "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm" }    */
public static Date parseDate(Object str) {
if (str == null) {
return null;
}
try {
return String(), parsePatterns);
} catch (ParseException e) {
return null;
}
}
/**
* 获取过去的天数
*
* @param date
* @return
*/
public static long pastDays(Date date) {
long t = new Date().getTime() - Time();
return t / (24 * 60 * 60 * 1000);
}
/
**
* 获得当前时间的字符串类型
* @return
*/
public static String toStr() {
return toStr(new Date());
}
/**
* Date转成"yyyy-MM-dd HH:mm:ss"格式的字符串
* @param date
* @return
*/
public static String toStr(Date date) {
return format(date, "yyyy-MM-dd HH:mm:ss");
}
/**
* 将⼀个 Date 格式化为⽇期/时间字符串
* @param date 要格式化为时间字符串的时间值
* @param pattern ⽇期和时间格式的模式
* @return已格式化的时间字符串
*/
public static String format(Date date, String pattern) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(date);
}
/**
* 获取过去的⼩时
*
* @param date
* @return
*/
public static long pastHour(Date date) {
long t = new Date().getTime() - Time();
return t / (60 * 60 * 1000);
}
/**
* 获取过去的分钟
*
* @param date
* @return
*/
public static long pastMinutes(Date date) {
long t = new Date().getTime() - Time();
return t / (60 * 1000);
}
/**
*  将毫秒值转换为时间(天,时:分:秒.毫秒)
*
* @param timeMillis
* @return
*/
public static String formatDateTime(long timeMillis) {
long day = timeMillis / (24 * 60 * 60 * 1000);
long hour = (timeMillis / (60 * 60 * 1000) - day * 24);
long min = ((timeMillis / (60 * 1000)) - day * 24 * 60 - hour * 60);
long s = (timeMillis / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
long sss = (timeMillis - day * 24 * 60 * 60 * 1000 - hour * 60 * 60 * 1000 - min * 60 * 1000 - s * 1000);
return (day > 0 ? day + "," : "") + hour + ":" + min + ":" + s + "." + sss;
}
/**
* 获取两个⽇期之间的天数
*
* @param before
* @param after
* @return
*/
public static double getDaysBetweenDate(Date before, Date after) {
return getMillisecBetweenDate(before,after) / (1000 * 60 * 60 * 24);
}
/**
* 获取两个⽇期之间的毫秒数
* @param before
* @param after
* @return
*/
public static long getMillisecBetweenDate(Date before, Date after){
long beforeTime = Time();
long afterTime = Time();
return afterTime - beforeTime;
}
/**
* 获取当前⽉的第⼀天
* @return
*/
public static String getFirstDayOfMonth() {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
//获取当前⽉第⼀天:
Calendar c = Instance();
c.add(Calendar.MONTH, 0);
c.set(Calendar.DAY_OF_MONTH, 1);//设置为1号,当前⽇期既为本⽉第⼀天        String first = format.Time());
return first;
}
/**
* 获得当前时间的时间戳
* @return
*/
public static Timestamp getTimestamp() {
return new Timestamp(new Date().getTime());
}
/**
*
* ⽅法名: getDoubleType
* 描述: 返回时间的 double
* 参数: @param dateString
* 参数: @return
* 参数: @throws ParseException    设定⽂件
*/
public static double getDoubleType(String dateString) throws ParseException {        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        Date date = sdf.parse(dateString);
Time();
}
/**
* 获得两个Date之间的秒数
* @param startTime 开始时间
* @param endTime  结束时间
* @return
*/
public static int calLastedTime(Date startTime, Date endTime) {
long a = Time();
long b = Time();
int c = (int) ((a - b) / 1000);
return c;
}
/**
* 获取若⼲个⼩时之后的时间(字符串类型)
* @param startTime
* @param hours
* @return
*/
public static String getPassHours(String startTime, int hours) {
// 获取⼀个⼩时以后的时间
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date date = null;
try {
date = df.parse(startTime);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Calendar calendar = Instance();
string转date的方法calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, (Calendar.HOUR_OF_DAY) + hours);
return df.Time());
}
/**
* "yyyy-MM-dd HH:mm:ss"格式的⽇期在若⼲天数后的时间(字符串)
* @param time
* @param days
* @return
*/
public static String getAddDate(String time,int days) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = dateFormat.parse(time);
} catch (ParseException e) {
e.printStackTrace();
} // 指定⽇期
Date newDate = null;
try {
newDate = addDate(date, days);
} catch (ParseException e) {
e.printStackTrace();
} // 指定⽇期加上20天
String st = dateFormat.format(newDate);
return st;
}
/**
* 指定时间在若⼲天后的时间
* @param date
* @param day
* @return
* @throws ParseException
*/
public static Date addDate(Date date,long day) throws ParseException {
long time = Time(); // 得到指定⽇期的毫秒数
day = day*24*60*60*1000; // 要加上的天数转换成毫秒数
time+=day; // 相加得到新的毫秒数
return new Date(time); // 将毫秒数转换成⽇期
}
/**
* 获取当天的某⼀时刻Date
* @param hour      24⼩时
* @param min      分钟
* @param sec      秒
* @param mill      毫秒
* @return

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。