/**
* Copyright 2007-2010 非也
* All rights reserved.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation。
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses. *
*/
package org.fireflow.engine.modules.script.functions;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 日期工具类,
*
* @author 非也
* @version 2.0
*/
public class DateTimeUtil {
private static DateTimeUtil dateTimeUtil = null;
private DateTimeUtil(){
}
public static DateTimeUtil getInstance(){
if (dateTimeUtil==null){
dateTimeUtil = new DateTimeUtil();
}
return dateTimeUtil;
}
/**
* 返回iniDate后某个时间。
* @param initDate 起始时间
* @param value 间隔时间值
* @param unit 间隔时间单位,y/Y表示年,m/M表示月,d/D表示日,h/H表示时,mi/Mi/MI表示分钟,s表示秒
* @return
*/
public Date dateAfter(Date initDate,int value, String unit){
if (initDate==null){
return null;
}
Calendar cal = Calendar.getInstance();
cal.setTime(initDate);
int timeUnit = Calendar.SECOND;
if (unit==null || unit.trim().equals("")){
timeUnit = Calendar.SECOND;
}
else if (unit.trim().equalsIgnoreCase("y")){
timeUnit = Calendar.YEAR;
}
else if (unit.trim().equalsIgnoreCase("m")){
timeUnit = Calendar.MONTH;
}else if (unit.trim().equalsIgnoreCase("d")){
timeUnit = Calendar.DATE;
}
else if (unit.trim().equalsIgnoreCase("h")){
timeUnit = Calendar.HOUR;
}
else if (unit.trim().equalsIgnoreCase("mi")){
timeUnit = Calendar.MINUTE;
}
else if (unit.trim().equalsIgnoreCase("s")){
timeUnit = Calendar.SECOND;
}
cal.add(timeUnit, value);
return cal.getTime();
}
/**
* 返回iniDate前的某个时间。
* @param initDate 起始时间
* @param value 间隔时间值
* @param unit 间隔时间单位,y/Y表示年,m/M表示月,d/D表示日,h/H表示时,mi/Mi/MI表示分钟,s表示秒
* @return
*/
public Date dateBefore(Date initDate,int value, String unit){
if (initDate==null){
return null;
}
Calendar cal = Calendar.getInstance();
cal.setTime(initDate);
int timeUnit = Calendar.SECOND;
if (unit==null || unit.trim().equals("")){
timeUnit = Calendar.SECOND;
}
else if (unit.trim().equalsIgnoreCase("y")){
timeUnit = Calendar.YEAR;
}
else if (unit.trim().equalsIgnoreCase("m")){
timeUnit = Calendar.MONTH;
}else if (unit.trim().equalsIgnoreCase("d")){
timeUnit = Calendar.DATE;
}
else if (unit.trim().equalsIgnoreCase("h")){
timeUnit = Calendar.HOUR;
}
else if (unit.trim().equalsIgnoreCase("mi")){
timeUnit = Calendar.MINUTE;
}
else if (unit.trim().equalsIgnoreCase("s")){
timeUnit = Calendar.SECOND;
}
cal.add(timeUnit, value);
return cal.getTime();
}
public String format(Date d,String pattern){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
return simpleDateFormat.format(d);
}
}