您的位置:首页 > 其它

日期工具类

2015-04-11 00:00 204 查看
摘要: 这个工具类提供了常用的日期转换方法

package com.yaphis.util.date;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
* 时间工具类
*
* @author huangchunhui 2014-1-15 下午7:58:03
*/
public class DateUtil {

/**
* yyyy-MM-dd HH:mm:ss
*/
public static final String SP1 = "yyyy-MM-dd HH:mm:ss";

/**
* yyyyMMddHHmmss
*/
public static final String SP2 = "yyyyMMddHHmmss";

/**
* yyyy-MM-dd
*/
public static final String SP3 = "yyyy-MM-dd";

/**
* yyyyMMdd
*/
public static final String SP4 = "yyyyMMdd";

/**
* 将时间以指定格式格式化
*
* @param time 待转换时间
* @param formatStrBefore 转换前时间格式
* @param formatStrAfter 转换后时间格式
* @return
* @throws Exception
*/
public static String parseTime(String time, String formatStrBefore, String formatStrAfter) throws ParseException {
SimpleDateFormat bfSp = new SimpleDateFormat(formatStrBefore);
SimpleDateFormat afSp = new SimpleDateFormat(formatStrAfter);
return afSp.format(bfSp.parse(time));
}

/**
* 比较时间前后
*
* @param time1 时间1
* @param time2 时间2
* @param formatStr 时间格式
* @return 时间1比时间2早则返回1 时间1比时间2晚则返回-1 时间1等于时间2则返回0
* @throws ParseException
*/
public static int compareTime(String time1, String time2, String formatStr) throws ParseException {
SimpleDateFormat sp = new SimpleDateFormat(formatStr);
Date date1 = sp.parse(time1);
Date date2 = sp.parse(time2);
if (date1.before(date2)) {
return 1;
} else if (date1.after(date2)) {
return -1;
} else {
return 0;
}
}

/**
* 获得指定格式的当前时间
*
* @param formatStr 时间格式
* @return
*/
public static String getCurrentTime(String formatStr) {
SimpleDateFormat sp = new SimpleDateFormat(formatStr);
return sp.format(new Date());
}

/**
* 获取指定格式的某时间,例如1小时前 或者1小时后
*
* @param field 例如Calendar.DAY_OF_MONTH
* @param amount 整数 例如-1
* @param formatStr 时间格式
* @return
*/
public static String getTimeAfter(int field, int amount, String formatStr) {
Calendar cal = Calendar.getInstance();
cal.add(field, amount);
SimpleDateFormat sp = new SimpleDateFormat(formatStr);
return sp.format(cal.getTime());
}

/**
* 获取当月第一天
*
* @param formatStr
* @return
*/
public static String getFirstDayOfMonth(String formatStr) {
SimpleDateFormat sp = new SimpleDateFormat(formatStr);
Calendar date = Calendar.getInstance();// 今天
date.set(Calendar.DAY_OF_MONTH, 1);// 设置日期为本月第1天
date.set(Calendar.HOUR_OF_DAY, 0);// 设置时
date.set(Calendar.MINUTE, 0);// 设置分
date.set(Calendar.SECOND, 0);// 设置秒
return sp.format(date.getTime());
}

/**
* 日期/时间 计算 这个方法只能对yyyy-MM-dd HH:mm:ss 格式的时间进行运算
* <p>
* 该方法已经由calculateTime(String time,String formatStr, String addpart, int num) 取代,为做兼容没有删掉
*
* @param time 待计算时间
* @param addpart 可选 Y M D H F S
* @param num 增加或者减少量(整数)
* @return
* @throws Exception
*/
@Deprecated
public static String calculateTime(String time, String addpart, int num) throws ParseException {
DateFormat yyyyMMddHHmmssDateFormat = new SimpleDateFormat(SP1);
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(yyyyMMddHHmmssDateFormat.parse(time));
if (addpart.equalsIgnoreCase("Y")) {
cal.add(Calendar.YEAR, num);
} else if (addpart.equalsIgnoreCase("M")) {
cal.add(Calendar.MONTH, num);
} else if (addpart.equalsIgnoreCase("D")) {
cal.add(Calendar.DATE, num);
} else if (addpart.equalsIgnoreCase("H")) {
cal.add(Calendar.HOUR, num);
} else if (addpart.equalsIgnoreCase("F")) {
cal.add(Calendar.MINUTE, num);
} else if (addpart.equalsIgnoreCase("S")) {
cal.add(Calendar.SECOND, num);
}
return yyyyMMddHHmmssDateFormat.format(cal.getTime());
}

/**
* 日期/时间 计算
*
* @param time 待计算时间
* @param formatStr 时间格式
* @param addpart 可选 Y M D H F S
* @param num 增加或者减少量(整数)
* @return
* @throws Exception
*/
public static String calculateTime(String time, String formatStr, String addpart, int num) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat(formatStr);
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(dateFormat.parse(time));
if (addpart.equalsIgnoreCase("Y")) {
cal.add(Calendar.YEAR, num);
} else if (addpart.equalsIgnoreCase("M")) {
cal.add(Calendar.MONTH, num);
} else if (addpart.equalsIgnoreCase("D")) {
cal.add(Calendar.DATE, num);
} else if (addpart.equalsIgnoreCase("H")) {
cal.add(Calendar.HOUR, num);
} else if (addpart.equalsIgnoreCase("F")) {
cal.add(Calendar.MINUTE, num);
} else if (addpart.equalsIgnoreCase("S")) {
cal.add(Calendar.SECOND, num);
}
return dateFormat.format(cal.getTime());
}

/**
* 返回两个时间之间的差(毫秒数)
*
* @param time1
* @param time2
* @param formatStr
* @return
* @throws ParseException
*/
public static long dateDiffer(String time1, String time2, String formatStr) throws ParseException {
SimpleDateFormat sp = new SimpleDateFormat(formatStr);
Date date1 = sp.parse(time1);
Date date2 = sp.parse(time2);
long differ = Math.abs(date1.getTime() - date2.getTime());
return differ;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  日期转换