package com.cmcc.flow.util;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
*
*/
public class DateTimeUtil {
private static Log logger = LogFactory.getLog(DateTimeUtil.class);
private final static String DATE_FORMAT_YYMMDD="yyyyMMdd";
public static Calendar getCurrentDay(){
Calendar cal = Calendar.getInstance();
return cal;
}
/**
* 获取昨天日期
*/
public static String getYesterdayStr() {
Calendar cal = getCurrentDay();
cal.add(Calendar.DATE, -1);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//定义格式,不显示毫秒
return df.format(cal.getTime());
}
/**
* 获取昨天
* @return
*/
public static Date getYesterday(){
Calendar cal = getCurrentDay();
cal.add(Calendar.DATE, -1);
return cal.getTime();
}
public static Date getTomorrow(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, +1);
return cal.getTime();
}
public static Date getAfterOrBeforeDate(Date date, int afterDates){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, afterDates);
return cal.getTime();
}
/**
* 获取某月第一天
* @param date
* @return
* @author wangguangyao@chinamobile.com
* @date 2015年1月7日
*/
public static String getFirstDayInMonth(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.DAY_OF_MONTH,1);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//定义格式,不显示毫秒
return df.format(cal.getTime());
}
/**
* 获取某月最后一天
* @param date
* @return
* @author wangguangyao@chinamobile.com
* @date 2015年1月7日
*/
public static String getLastDayInMonth(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.DAY_OF_MONTH,cal.getActualMaximum(Calendar.DAY_OF_MONTH));
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//定义格式,不显示毫秒
return df.format(cal.getTime());
}
/**
*
* @param date:字符串格式只支持yyyy-MM-dd格式
* @param afterDates:负数向前推算,正数向后推算
* @return
* @throws ParseException
*/
public static String getAfterOrBeforeDate(String date, int afterDates) throws ParseException{
String yyyy_MM_dd = "yyyy-MM-dd";
Calendar cal = Calendar.getInstance();
cal.setTime(converStrToDate(yyyy_MM_dd, date));
cal.add(Calendar.DATE, afterDates);
return getDateStrByFormat(yyyy_MM_dd, cal.getTime());
}
/**
* 根据格式化串格式化日期
* @param format
* @param date
* @return
*/
public static String getDateStrByFormat(String format, Date date) {
SimpleDateFormat df = new SimpleDateFormat(format);//定义格式,不显示毫秒
return df.format(date);
}
/**
*
* @param dateInt 整型不允许为null
* @param interval 间隔天数,可为正负
* @param dateFormat 日期格式化类型
* @return 返回间隔后的整数日期,出现异常返回null
*/
public static Long getIntervalDate(Long dateInt,int interval,String dateFormat) {
//
if(dateFormat==null){
dateFormat=DATE_FORMAT_YYMMDD;
}
Long intervalDate=null;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
Date date = null;
try {
date = simpleDateFormat.parse(String.valueOf(dateInt));
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, interval);
intervalDate=Long.valueOf(simpleDateFormat.format(calendar.getTime()));
} catch (ParseException e) {
logger.error("DateToolUti.getIntervalDate",e);
}
return intervalDate;
}
public static Date converStrToDate(String format, String date) throws ParseException {
Date dateTemp = null;
SimpleDateFormat formater2 = new SimpleDateFormat(format);
dateTemp = formater2.parse(date);
return dateTemp;
}
public static String yyyyXMMXdd2yyyyMMdd(String date_str, String X) throws ParseException{
Date date = yyyyXMMXdd(date_str, X);
return yyyyMMdd(date);
}
public static String yyyyMMdd2yyyyXMMXdd(String date_str, String X) throws ParseException{
Date date = yyyyMMdd( date_str);
return yyyyXMMXdd(date, X);
}
public static Date yyyyXMMXdd2yyyyMMdd(Date date, String X) throws ParseException{
String date_ = yyyyXMMXdd(date, X);
return yyyyMMdd(date_);
}
public static Date yyyyMMdd(String date_str) throws ParseException{
return new SimpleDateFormat("yyyyMMdd").parse(date_str);
}
public static String yyyyMMdd(Date date) throws ParseException{
return new SimpleDateFormat("yyyyMMdd").format(date);
}
public static String yyyy_MM_dd(Date date) throws ParseException{
return new SimpleDateFormat("yyyy-MM-dd").format(date);
}
public static Date yyyy_MM_dd(String date_str) throws ParseException{
return new SimpleDateFormat("yyyy-MM-dd").parse(date_str);
}
public static Date yyyyXMMXdd(String date_str, String x) throws ParseException{
return new SimpleDateFormat("yyyy"+x+"MM"+x+"dd").parse(date_str);
}
public static String yyyyXMMXdd(Date date, String x) throws ParseException{
return new SimpleDateFormat("yyyy"+x+"MM"+x+"dd").format(date);
}
public static Date yyyyMMddHHmmss(String date_str) throws ParseException{
return new SimpleDateFormat("yyyyMMddHHmmss").parse(date_str);
}
public static String yyyyMMddHHmmss(Date date) throws ParseException{
return new SimpleDateFormat("yyyyMMddHHmmss").format(date);
}
public static String yyyy_MM_dd_HH_mm_ss(Timestamp date) throws ParseException{
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
}
public static String yyyy_MM_dd_HH_mm_ss(Date date) throws ParseException{
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
}
public static Date yyyy_MM_dd_HH_mm_ss(String date_str) throws ParseException{
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date_str);
}
public static Date yyyyXMMXdd_HHXmmXss(String date_str, String x) throws ParseException{
return new SimpleDateFormat("yyyy"+x+"MM"+x+"dd "+"HH"+x+"mm"+x+"ss").parse(date_str);
}
public static String yyyyXMMXdd_HHXmmXss(Date date, String x) throws ParseException{
return new SimpleDateFormat("yyyy"+x+"MM"+x+"dd "+"HH"+x+"mm"+x+"ss").format(date);
}
public static Date yyyyXMMXdd_HHXmmXss(String date_str, String x, String xx) throws ParseException{
return new SimpleDateFormat("yyyy"+x+"MM"+x+"dd "+"HH"+xx+"mm"+xx+"ss").parse(date_str);
}
public static String yyyyXMMXdd_HHXmmXss(Date date, String x, String xx) throws ParseException{
return new SimpleDateFormat("yyyy"+x+"MM"+x+"dd "+"HH"+xx+"mm"+xx+"ss").format(date);
}
public static void main(String[] args){
Date date = new Date();
System.out.println(getDateStrByFormat("yyyyMMdd",date));
date = getTomorrow(date);
System.out.println(getDateStrByFormat("yyyyMMdd",date));
try {
System.out.println(getAfterOrBeforeDate("2014-12-02", -1*1));
System.out.println(getFirstDayInMonth(new Date()));
System.out.println(getLastDayInMonth(new Date()));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
日期Date操作的相关方法
最新推荐文章于 2024-10-24 13:59:57 发布