package xxx;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import com.xxx.utils.obj.ObjectUtils;
import com.xxx.utils.string.StringUtils;
/**
* 日期函数
*
*/
public final class DateUtils {
// 时间默认mormat格式
public static final String DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static final String FORMAT_YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
// 日志答应信息
/**
* 获得当前时间
*
* @return
*/
public static Date getCurrDate() {
return new Date(System.currentTimeMillis());
}
//得到当天最后一秒的时间
public static Date getLastSecond(Date date) throws Exception{
DateFormat format=new SimpleDateFormat("yyyy-MM-dd");
String str=format.format(date);
Date d2=format.parse(str);
long curMillisecond=d2.getTime();//当天的毫秒
int dayMis=1000*60*60*24;//一天的毫秒
long resultMis=curMillisecond+(dayMis-1); //当天最后一秒
//得到我需要的时间 当天最后一秒
Date resultDate=new Date(resultMis);
return resultDate;
}
/**
* 操作日期的字段
*
* @param date
* 需要改变的日期
* @param field
* 需要修改的字段
* @param num
* 增加为正数,减少为负数
* @return
*/
public static Date optDateField(Date date, int field, int num) {
if (ObjectUtils.isNull(date)) {
date = getCurrDate();
}
Calendar cal = Calendar.getInstance(Locale.getDefault());
cal.setTime(date);
cal.set(field, cal.get(field) + num);
return cal.getTime();
}
/**
* 将字符串解析成日期格式
*
* @param str
* @param format
* @return
* @throws ParseException
*/
public static Date strToDate(String str, String format) {
try {
if (StringUtils.isEmpty(format)) {
format = DEFAULT_FORMAT;
}
SimpleDateFormat df = new SimpleDateFormat(format);
return df.parse(str);
} catch (Exception e) {
// logger.debug("时间格式转换出错误,时间字符串为:".concat(str).concat("日志格式为:").concat(format),
// e);
}
return null;
}
/**
* 时间戳转换成日期字符串
* @param second 精确到秒
* @param format 时间格式
* @return
*/
public static String timeStamp2Date(Long second,String format) {
String seconds = String.valueOf(second);
if(seconds == null || seconds.isEmpty() || seconds.equals("null")){
return "";
}
if(format == null || format.isEmpty()) {
format = "yyyy-MM-dd HH:mm:ss";
}
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(new Date(Long.valueOf(seconds+"000")));
}
}