package com.paic.lpms.common.util;
import java.security.InvalidParameterException;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.Format;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.paic.lpms.common.web.util.WebUtils;
import com.paic.pafa.app.integration.dao.PafaDAOException;
import com.paic.pafa.app.lwc.core.util.DevLog;
/**
* 时间格式工具类
*
* @author yujiaxiang001
* @version 1.0
* @Date 2009-10-26
*/
public class DateUtil {
//added by mazhao814, DateFormat Constants
public static final String PATTERN_HOUR = "HH";
public static final String PATTERN_MIN = "mm";
public static final String PATTERN_MMddyyyy = "MM/dd/yyyy";
public static final String PATTERN_yyyyMMddWithSlash = "yyyy/MM/dd";
public static final String PATTERN_MMddyyyyHHmm = "MM/dd/yyyy HH:mm";
public static final String PATTERN_yyyyMMddHHmm = "yyyy-MM-dd HH:mm";
public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static final String PATTERN_yyyyMMdd = "yyyy-MM-dd";
public static final String PATTERN_yyyyMMddWithoutBlank = "yyyyMMdd";
public static final String PATTERN_MMddyyyyHHmmss = "MM/dd/yyyy HH:mm:ss";
public static final String PATTERN_yyyyMMddHHmmssWithSlash = "yyyy/MM/dd HH:mm:ss";
public static final String PATTERN_MMddyyyyHHmmSSS="yyyyMMddHHmmss.SSS";
public static final String PATTERN_MMddyyyyHHmmSSSWithoutSeperator ="yyyyMMddHHmmssSSS";
public static final String PATTERN_yyyyMMddHHmmssWithoutSeperator ="yyyyMMddHHmmss";
public static final DateFormat FORMAT_MMddyyyy = new SimpleDateFormat(PATTERN_MMddyyyy);
public static final DateFormat FORMAT_MMddyyyyHHmm = new SimpleDateFormat(PATTERN_MMddyyyyHHmm);
public static final DateFormat FORMAT_MMddyyyyHHmmss = new SimpleDateFormat(PATTERN_MMddyyyyHHmmss);
public static final DateFormat FORMAT_HOUR = new SimpleDateFormat(PATTERN_HOUR);
public static final DateFormat FORMAT_MIN = new SimpleDateFormat(PATTERN_MIN);
public static final DateFormat FORMAT_MMddyyyyHHmmSSS = new SimpleDateFormat(PATTERN_MMddyyyyHHmmSSS);
public static final DateFormat FORMAT_yyyyMMddHHmmssWithoutSeperator = new SimpleDateFormat(PATTERN_yyyyMMddHHmmssWithoutSeperator);
public static final DateFormat FORMAT_yyyyMMddWithoutBlank = new SimpleDateFormat(PATTERN_yyyyMMddWithoutBlank);
public static final DateFormat FORMAT_yyyyMMddHHmm = new SimpleDateFormat(PATTERN_yyyyMMddHHmm);
public static final DateFormat FORMAT_yyyyMMddHHmmss_DEFAULT = new SimpleDateFormat(DEFAULT_DATE_FORMAT);
public static final DateFormat FORMAT_yyyyMMdd = new SimpleDateFormat(PATTERN_yyyyMMdd);
public static final DateFormat FORMAT_yyyyMMddHHmmssWithSlash = new SimpleDateFormat(PATTERN_yyyyMMddHHmmssWithSlash);
public static final DateFormat FORMAT_yyyyMMddWithSlash = new SimpleDateFormat(PATTERN_yyyyMMddWithSlash);
private final static Log logger = LogFactory.getLog(DateUtil.class);
private static Calendar calendar = Calendar.getInstance();
public static void main(String[] args) {
System.out.println(compare("2013-05-30", DateUtil.boundaryValue()));
}
public static String format(Date value) {
return format(value, DEFAULT_DATE_FORMAT);
}
/**
* 格式化日期
*
* @param value value
* @param pattern pattern
* @return String
*/
public static String getString(Date value, String pattern) {
if (value == null) {
return "";
}
SimpleDateFormat vFormat = new SimpleDateFormat(pattern);
return vFormat.format(value);
}
/**
* 将日期转化为字符串
*
* @param value 日期值
* @param format 日期格式,缺省为"yyyy-MM-dd HH:mm:ss"
* @return 转化后的字符串
*/
public static String format(Date value, String format) {
if (value == null)
return "";
if (format == null || format.length() == 0)
format = DEFAULT_DATE_FORMAT;
DateFormat df = new SimpleDateFormat(format);
String result = df.format(value);
if (result.length() != format.length()) {
DevLog.debug(result + " is not equals date format " + format);
}
return result;
}
/**
* 补全日期字符串,如"2007-12-10"+"23:59:59"变为"2007-12-10 23:59:59"
*
* @param value
* @param defValue
* @return
*/
public static String fill(String value, String defValue) {
if (value == null || value.length() == 0)
return value;
if (defValue == null || defValue.length() == 0)
return value;
int diff = DEFAULT_DATE_FORMAT.length() - value.length();
if (diff <= 0) {
return value;
} else {
if (defValue.length() >= diff) {
return value + defValue.substring(defValue.length() - diff);
} else {
return value + defValue;
}
}
}
public static Date format(String value) {
return format(value, DEFAULT_DATE_FORMAT);
}
/**
* 解析字符串为日期对象
*
* @param value 日期字符串
* @param format 日期格式,缺省为"yyyy-MM-dd HH:mm:ss"
* @return Date 转化后的日期值
*/
public static Date format(String value, String format) {
if (value == null || value.length() == 0)
return null;
if (format == null || format.length() == 0)
format = DEFAULT_DATE_FORMAT;
if (format.length() > value.length()) {
format = format.substring(0, value.length());
}
Date result = null;
SimpleDateFormat df = null;
if (format != null && format.length() > 0) {
df = new SimpleDateFormat(format);
try {
result = df.parse(value);
} catch (ParseException pe) {
DevLog.debug(value + " parse fail with date format " + format);
result = null;
}
if (result != null)
return result;
}
return result;
}
/**
* 解析字符串为日期对象
*
* @param value 日期字符串 "YYYY-MM-DD"
* @return Date 转化后的日期值
* @throws ParseException
* @author EX-ZHENGLAI001
*/
public static String formatStr(String value) throws ParseException {
if (value == null || value.length() == 0)
return null;
Date date = new SimpleDateFormat("yyyy-MM-dd").parse(value);
String dateStr = new SimpleDateFormat("MM/dd/yyyy").format(date);
return dateStr;
}
/**
* 解析字符串为日期对象
*
* @param value 日期字符串 "MM/DD/YYYY"
* @return Date 转化后的日期值
* @throws ParseException
* @author EX-ZHENGLAI001
*/
public static String formats(String value) throws ParseException {
if (value == null || value.length() == 0)
return null;
Date date = new SimpleDateFormat("MM/dd/yyyy").parse(value);
String dateStr = new SimpleDateFormat("yyyy-MM-dd").format(date);
return dateStr;
}
/**
* Description 解析字符串为日期对象
*
* @param value 日期字符串
* @return Date 转化后的日期值
* @Copyright Copyright (c) 2012
* @Company
* @author EX-ZHENGLAI001
* @CreateTime 2012-06-23 17:00:00
*/
public static Date formatDate(String value) {
if (value == null || value.length() == 0) {
DevLog.debug(value + " parse fail with date value is null ");
return null;
}
Date result = null;
try {
result = new Date(Timestamp.parse(value));
} catch (Exception e) {
DevLog.debug(value + " parse fail with date format ");
logger.fatal(value + " parse fail with date format ", e);
}
return result;
}
/**
* 给日期增加指定天数
*
* @param startDate 开始日期
* @param day 增加天数
* @return 增加天数后的日期
*/
public static Date addDate(Date startDate, int day) {
if (startDate == null)
return null;
calendar.setTime(startDate);
calendar.add(Calendar.DATE, day);
return calendar.getTime();
}
/**
* 给时间增加指定小时
*
* @param startDate
* @param hour
* @return
*/
public static Date addHour(Date startDate, int hour) {
if (startDate == null)
return null;
calendar.setTime(startDate);
calendar.add(Calendar.HOUR, hour);
return calendar.getTime();
}
/**
* 给时间增加指定分钟
*
* @param startDate
* @param min
* @return
*/
public static Date addMin(Date startDate, int min) {
if (startDate == null)
return null;
calendar.setTime(startDate);
calendar.add(Calendar.MINUTE, min);
return calendar.getTime();
}
/**
* 获得当前日期的字符串,格式默认 YYYY-MM-DD
*
* @param datePattern
* @return 根据输入格式要求的时间日期
* @author ex_jinjie 2009/1/12
*/
public static String getDateForFormat(String datePattern) {
if (StringUtil.isNullOrBlank(datePattern)) {
datePattern = "yyyy-MM-dd";
}
return new SimpleDateFormat(datePattern).format(Calendar.getInstance().getTime());
}
/**
* Description:计算两个日期间的天数
*
* @param fromDate 起始日期
* @param toDate 结束日期
* @return Create Time:20081107
* @throws ParseException
* @author MIAOJIYONG001
*/
public static long dateDiff(String fromDate, String toDate) throws ParseException {
long days = 0;
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
Date from = df.parse(fromDate);
Date to = df.parse(toDate);
days = (long) ((to.getTime() - from.getTime()) / (24 * 60 * 60 * 1000));
return days;
}
public static long dateDiff(Date fromDate, Date toDate)
throws ParseException {
long days = 0;
days = (long) ((toDate.getTime() - fromDate.getTime()) / (24 * 60 * 60 * 1000));
return days;
}
/**
* Description:计算两个日期间的天数 yyyy-MM-dd HH:mm:ss
*
* @param fromDate 起始日期
* @param toDate 结束日期
* @return Create Time:20081107
* @throws ParseException
* @author MIAOJIYONG001
*/
public static long dateDiffAddHMS(String fromDate, String toDate) throws ParseException {
long days = 0;
Date from = FORMAT_yyyyMMddHHmmss_DEFAULT.parse(fromDate);
Date to = FORMAT_yyyyMMddHHmmss_DEFAULT.parse(toDate);
long tt = to.getTime() - from.getTime();
int num = 24 * 60 * 60 * 1000;
days = tt / num;
if (tt % num > 0) {
days++;
}
return days;
}
/**
* 判断二个日期是否在间隔之内,如果在间隔之内,则返回真,否则则返回false 间隔时间以小时计;
*
* @param Date1
* @param Date2
* @param hours
* @return
*/
public static boolean judgeDate(Date Date1, Date Date2, int hours) {
boolean res = false;
if (Date1 == null || Date2 == null) {
return res;
}
hours = hours * 60 * 60 * 1000;
calendar.setTime(Date1);
long date1InMill = calendar.getTimeInMillis();
logger.debug("date1InMill:" + date1InMill);
calendar.setTime(Date2);
long date1InMil2 = calendar.getTimeInMillis();
logger.debug("date1InMil2 - date1InMill:" + (date1InMil2 - date1InMill));
if ((date1InMil2 - date1InMill) <= hours) {
res = true;
}
return res;
}
/**
* 判断二个日期是否在间隔之内,如果在间隔之内,则返回真,否则则返回false 间隔时间以小时计;
*
* @param Date1
* @param Date2
* @param hours
* @return
*/
public static boolean judgeDate(Date Date1, Date Date2, long hours) {
boolean res = false;
if (Date1 == null || Date2 == null) {
return res;
}
hours = hours * 60 * 60 * 1000;
calendar.setTime(Date1);
long date1InMill = calendar.getTimeInMillis();
logger.debug("date1InMill:" + date1InMill);
calendar.setTime(Date2);
long date1InMil2 = calendar.getTimeInMillis();
logger.debug("date1InMil2 - date1InMill:" + (date1InMil2 - date1InMill));
if ((date1InMil2 - date1InMill) <= hours) {
res = true;
}
return res;
}
/**
* 比较第一个时间是否比第二个时间新
*
* @param firstDate
* @param secondDate
* @param format 日期格式,缺省为"yyyy-MM-dd HH:mm:ss"
* @return
*/
public static boolean handlePairOfTime(Date firstDate, Date secondDate, String format) {
if (format == null || format.length() == 0)
format = DEFAULT_DATE_FORMAT;
Format formatter = new SimpleDateFormat(format);
String fDate = formatter.format(firstDate);
String sDate = formatter.format(secondDate);
Date newDate1 = null, newDate2 = null;
try {
newDate1 = (Date) formatter.parseObject(fDate);
newDate2 = (Date) formatter.parseObject(sDate);
if (newDate1.compareTo(newDate2) > 0) {
return true;
} else {
return false;
}
} catch (ParseException fe) {
DevLog.debug(fDate + " or " + sDate + " parse fail with date format.");
return false;
}
}
public static boolean handlePairOfDate(Date firstDate, Date secondDate) {
Format formatter = new SimpleDateFormat("yyyy-MM-dd");
String fDate = formatter.format(firstDate);
String sDate = formatter.format(secondDate);
Date newDate1 = null, newDate2 = null;
try {
newDate1 = (Date) formatter.parseObject(fDate);
newDate2 = (Date) formatter.parseObject(sDate);
if (newDate1.compareTo(newDate2) > 0) {
return true;
} else {
return false;
}
} catch (ParseException fe) {
DevLog.debug(fDate + " or " + sDate + " parse fail with date format.");
return false;
}
}
public static boolean handlePairOfDateToInsurance(Date firstDate, Date secondDate) {
Format formatter = new SimpleDateFormat("yyyy-MM-dd");
String fDate = formatter.format(firstDate);
String sDate = formatter.format(secondDate);
Date newDate1 = null, newDate2 = null;
try {
newDate1 = (Date) formatter.parseObject(fDate);
newDate2 = (Date) formatter.parseObject(sDate);
if (newDate1.compareTo(newDate2) >= 0) {
return true;
} else {
return false;
}
} catch (ParseException fe) {
DevLog.debug(fDate + " or " + sDate + " parse fail with date format.");
return false;
}
}
/**
* 按指定的格式返回当前日期串
*
* @param pattern
* @return
*/
public static String getCustomDateStrs(String pattern) {
Date calc = new Date();
Format macher = new SimpleDateFormat(pattern);
return macher.format(calc);
}
/**
* 按指定的格式返日期串
*
* @param date
* @param pattern
* @return
*/
public static String getCustomDateStrs(Date date, String pattern) {
Format macher = new SimpleDateFormat(pattern);
return macher.format(date);
}
/**
* @param args
*/
/* public static void main(String[] args) {
Date time = format("2005-12-01 16:59:59", null);
String str = format(time, null);
DevLog.debug(str);
}*/
/**
* 获取今天是星期几
*
* @return
*/
public static int getWeekday() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
return calendar.get(Calendar.DAY_OF_WEEK);
}
public static int getWeekday(String date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(format(date));
return calendar.get(Calendar.DAY_OF_WEEK);
}
/**
* 根据年月日得到一个合法日期,不合法逐年递增直至找到
*
* @param yearStr
* @param monthStr
* @param dayStr
* @return
*/
public static Date getValidBeginDateForYearCycle(String yearStr, String monthStr, String dayStr) {
int day = Integer.parseInt(dayStr);
Date today = getToday();
Calendar calendar = Calendar.getInstance();
Date validBeginDate = getEndDate(yearStr, monthStr, dayStr);
calendar.setTime(validBeginDate);
while (validBeginDate.before(today)) {
validBeginDate = getEndDate(calendar.get(Calendar.YEAR) + 1, calendar
.get(Calendar.MONTH) + 1, day);
calendar.setTime(validBeginDate);
}
while (calendar.get(Calendar.DATE) != day) {
validBeginDate = getEndDate(calendar.get(Calendar.YEAR) + 1, calendar
.get(Calendar.MONTH) + 1, day);
calendar.setTime(validBeginDate);
}
return validBeginDate;
}
/**
* 根据年月日得到合法日期,如果该月无此日期,则取该月最后一天
*
* @param year
* @param month
* @param day
* @return
*/
public static Date getEndDate(int year, int month, int day) {
return getEndDate(String.valueOf(year), String.valueOf(month), String.valueOf(day));
}
public static Date getEndDate(String yearStr, String monthStr, String dayStr) {
int day = Integer.parseInt(dayStr);
if (day < 0 || day > 31) {
throw new InvalidParameterException("参数错误,设置提醒失败!");
}
Calendar calendar = Calendar.getInstance();
Date beginDate = DateUtil.format(yearStr + "-" + monthStr + "-01");
calendar.setTime(beginDate);
int maxday = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
calendar.set(Calendar.DATE, maxday);
if (calendar.get(Calendar.DATE) > day) {
calendar.set(Calendar.DATE, day);
}
return calendar.getTime();
}
public static Date getToday() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/**
* 根据年月日得到一个合法日期,不合法逐月递增直至找到
*
* @param yearStr
* @param monthStr
* @param dayStr
* @return
*/
public static Date getValidBeginDateForMonthCycle(String yearStr, String monthStr, String dayStr) {
int day = Integer.parseInt(dayStr);
Date today = getToday();
Calendar calendar = Calendar.getInstance();
Date validBeginDate = getEndDate(yearStr, monthStr, dayStr);
calendar.setTime(validBeginDate);
while (validBeginDate.before(today)) {
validBeginDate = getEndDate(calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH) + 2, day);
calendar.setTime(validBeginDate);
}
while (calendar.get(Calendar.DATE) != day) {
validBeginDate = getEndDate(calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH) + 2, day);
calendar.setTime(validBeginDate);
}
return validBeginDate;
}
/**
* 校验日期字符串是否合法
*
* @param date 日期字符串
* @author EX-LIYONGSHENG001
*/
public static boolean validateDate(String date) {
int strYMDSP = 0;
// 判断YYYYMMDD中的分隔符号 不是-报错
if (!date.substring(4, 5).equals("-")) {
return false;
}
String year = date.substring(0, 4);
// 截去年份
date = date.substring(5, date.length());
// 获取月和日的分界
for (int i = 0; i < date.length(); i++) {
if (date.substring(i, i + 1).equals("-")) {
strYMDSP = i;
break;
}
}
// 月日没有-分割报错
if (strYMDSP < 1) {
return false;
}
// 获取月
String month = date.substring(0, strYMDSP);
String day = date.substring(strYMDSP + 1, date.length());
// 补零
if (month.length() == 1) {
month = "0" + month;
}
if (day.length() == 1) {
day = "0" + day;
}
// 调用CheckyyyyMMdd函数判断yyyyMMdd格式的日期
if (!checkyyyyMMdd(year + month + day)) {
return false;
}
return true;
}
/**
* 将不符合要求的字符串转换成前面补零的字符串
*
* @param date 源字符串
* @author EX-LIYONGSHENG001
*/
public static String leftPadDate(String date) {
if (date.length() == 1) {
return "0" + date;
} else {
return date;
}
}
/**
* 校验年月日是否合法
*/
private static boolean checkyyyyMMdd(String dayString) {
String digit = "0123456789";
int[] dateLastList = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 不是8位
if (dayString.length() != 8) {
return false;
}
// 日期不是数字
for (int i = 0; i < 8; i++) {
if (digit.indexOf(dayString.charAt(i)) == -1) {
return false;
}
}
// 获取年月日
int year = Integer.parseInt(dayString.substring(0, 4));
int month = Integer.parseInt(dayString.substring(4, 6));
int day = Integer.parseInt(dayString.substring(6, 8));
// 年月日出界
if (year > 2200 || year < 1900 || month > 12 || month < 1 || day > 31 || day < 1) {
return false;
}
// 每月最后一天出界
if (day > dateLastList[month - 1]) {
return false;
}
// 判断闰年、平年的二月天数
if (month == 2) {
// 整百(如:1600, 2000)的闰年
if ((year % 400) == 0) {
if (day > 29) {
return false;
}
} else if ((year % 4) == 0 && (year % 100) != 0) {
// 普通(1996, 2004)的闰年
if (day > 29) {
return false;
}
} else {
// 平年(如:1995,1997,2003,2005)
if (day > 28) {
return false;
}
}
}
return true;
}
/**
* 得到当天时间最大时刻,并将其转化为字符串
*/
public static String getMaxTodayTimeString() {
Date date = new Date();
TimeZone timeZoneChina = TimeZone.getTimeZone("Asia/Shanghai");
FORMAT_yyyyMMddHHmmss_DEFAULT.setTimeZone(timeZoneChina);
String result = FORMAT_yyyyMMddHHmmss_DEFAULT.format(date);
if (null != result && result.length() > 0) {
result = result.substring(0, 11);
}
result += "23:59:59";
return result;
}
/**
* 该方法用于获取系统时间-364的临界值
*/
public static String getStartTime() {
// String startTime="2010-08-21";
String before = ""; // startTime-365
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date time = new Date();
format.format(time);
before = format.format(DateUtil.addDate(time, -364));
return before;
}
/**
* 该方法用于获取系统时间-365的临界值
*/
public static String boundaryValue() {
// String startTime="2010-08-21";
String before = ""; // startTime-365
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date time = new Date();
format.format(time);
before = format.format(DateUtil.addDate(time, -365));
// System.out.println("系统-365时间:"+before);
return before;
}
/**
* 给日期增加指定月数
*
* @param startDate 开始日期
* @param month 增加月数
* @return 增加月数后的日期
*/
public static Date addMonth(Date startDate, int month) {
if (startDate == null)
return null;
calendar.setTime(startDate);
calendar.add(Calendar.MONTH, month);
return calendar.getTime();
}
/**
* 给日期增加指定天数
*
* @param day 增加天数
* @return 增加天数后的日期的字符串表示形式
*/
public static String boundaryValue(int day) {
// String startTime="2010-08-21";
String before = ""; // startTime-365
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date time = new Date();
format.format(time);
before = format.format(DateUtil.addDate(time, day));
// System.out.println("系统-365时间:"+before);
return before;
}
public static String boundaryValue(String nowDay, int day) {
// String startTime="2010-08-21";
String before = ""; // startTime-365
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date time = format(nowDay);
format.format(time);
before = format.format(DateUtil.addDate(time, day));
// System.out.println("系统-365时间:"+before);
return before;
}
/**
* 给日期增加指定天数
*
* @param startTime 开始日期
* @param day 增加天数
* @return 增加天数后的日期的字符串表示形式
*/
public static String boundaryValue(Date startTime, int day) {
// String startTime="2010-08-21";
String before = ""; // startTime-365
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
// Date time = new Date();
format.format(startTime);
before = format.format(DateUtil.addDate(startTime, day));
// System.out.println("系统-365时间:"+before);
return before;
}
/**
* 计算两个日期直接相差的天数
*
* @param endDate
* @param startDate
* @return
*/
public static long getQuot(Date endDate, Date startDate) {
long quot = 0;
quot = endDate.getTime() - startDate.getTime();
quot = quot / 1000 / 60 / 60 / 24;
return quot;
}
/**
* 计算两个日期直接相差的分钟数
*
* @param endDate
* @param startDate
* @return
*/
public static long getQuotMin(Date endDate, Date startDate) {
long quot = 0;
quot = endDate.getTime() - startDate.getTime();
quot = quot / 1000 / 60;
return quot;
}
/**
* 用于比较两个时间的前后
*
* @param time1 输入的开始时间,time2当前时间-365
* @return String 1: time1大于time2 2:表示 time2大于 time1
* @throws PafaDAOException
* @throws ParseException
* @throws ParseException
*/
public static String compare(String time1, String time2) {
DateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
Date startTimes;
String flag = "1";
try {
if (StrUtil.isEmpty(time1)) {
flag = "2";
return flag;
}
startTimes = dateformat.parse(time1);
Date befores = dateformat.parse(time2);
if (befores.getTime() < startTimes.getTime()) {
flag = "1";
} else {
flag = "2";
}
} catch (ParseException e) {
logger.fatal("", e);
}
return flag;
}
public static String compareFull(String time1, String time2) {
Date startTimes;
String flag = "1";
try {
if (StrUtil.isEmpty(time1)) {
flag = "2";
return flag;
}
startTimes = FORMAT_yyyyMMddHHmmss_DEFAULT.parse(time1);
Date befores = FORMAT_yyyyMMddHHmmss_DEFAULT.parse(time2);
if (befores.getTime() < startTimes.getTime()) {
flag = "1";
} else {
flag = "2";
}
} catch (ParseException e) {
logger.fatal("", e);
}
return flag;
}
/**
* 万里通红包抽奖开始时间
*/
private static Date _awardStartDate_test = null;//DateUtil.getEndDate(2013, 7, 18);
/**
* 万里通红包抽奖开始时间(第二波活动)
*/
private static Date _awardStartDate_Second = null;//DateUtil.getEndDate(2013, 7, 18);
/**
* 抢红包活动 开始时间配置
*/
private static Date _awardStartDate_redPacket = null;//DateUtil.getEndDate(2013, 7, 18);
/**
* 购爱星期三活动 开始时间配置
*/
private static Date _shopLoveWedStartDate_Love = null;
/**
* 购爱星期三活动 结束时间配置
*/
private static Date _shopLoveWedEndDate_Love = null;
/**
* 第二波活动默认开始时间为8月1日
*/
private final static Date _awardStartDateSecond_default = DateUtil.getEndDate(2013, 8, 1);
private static long time1 = 0l;
private final static Date _awardStartDate = DateUtil.getEndDate(2013, 7, 18);
/**
* 抢红包第二波活动开始时间设置
*/
private final static Date _redPacketAwardStartDate = DateUtil.getEndDate(2013, 8, 27);
/**
* 抢红包第二波活动结束时间设置
*/
private final static Date _redPacketAwardEndDate = DateUtil.getEndDate(2013, 10, 5);
/**
* 购爱星期三活动开始时间设置
*/
private final static Date _shopLoveWedStartDate = DateUtil.getEndDate(2013, 8, 3);
/**
* 购爱星期三活动结束时间设置
*/
private final static Date _shopLoveWedEndDate = DateUtil.getEndDate(2013, 10, 10);
/*第一波活动 开始时间配置*/
public static Date getAwardStartDate() {
/**10分钟更新一次配置*/
if (_awardStartDate_test == null || ((System.currentTimeMillis() - time1) > 1000 * 60 * 10)) {
String statdate = WebUtils.getListOfValue("RP", "startDate");
if (!StrUtil.isEmpty(statdate)) {
_awardStartDate_test = DateUtil.format(statdate);
}
time1 = System.currentTimeMillis();
}
if (_awardStartDate_test == null) {
return _awardStartDate;
} else {
return _awardStartDate_test;
}
}
/*第二波活动开始时间配置*/
public static Date getAwardStartDateNew() {
/**10分钟更新一次配置*/
if (_awardStartDate_Second == null || ((System.currentTimeMillis() - time1) > 1000 * 60 * 10)) {
String statdate = WebUtils.getListOfValue("RP", "startDateNew");
if (!StrUtil.isEmpty(statdate)) {
_awardStartDate_Second = DateUtil.format(statdate);
}
time1 = System.currentTimeMillis();
}
if (_awardStartDate_Second == null) {
return _awardStartDateSecond_default;
} else {
return _awardStartDate_Second;
}
}
/*抢红包活动 开始时间配置*/
public static Date getRedPacketAwardStartDate() {
/**10分钟更新一次配置*/
if (_awardStartDate_redPacket == null || ((System.currentTimeMillis() - time1) > 1000 * 60 * 10)) {
String statdate = WebUtils.getListOfValue("RP", "startRedPacketDate");
if (!StrUtil.isEmpty(statdate)) {
_awardStartDate_redPacket = DateUtil.format(statdate);
}
time1 = System.currentTimeMillis();
}
if (_awardStartDate_redPacket == null) {
return _redPacketAwardStartDate;
} else {
return _awardStartDate_redPacket;
}
}
/*抢红包活动 结束时间配置*/
public static Date getRedPacketAwardEndDate() {
/**10分钟更新一次配置*/
if (_awardStartDate_redPacket == null || ((System.currentTimeMillis() - time1) > 1000 * 60 * 10)) {
String statdate = WebUtils.getListOfValue("RP", "endRedPacketDate");
if (!StrUtil.isEmpty(statdate)) {
_awardStartDate_redPacket = DateUtil.format(statdate);
}
time1 = System.currentTimeMillis();
}
if (_awardStartDate_redPacket == null) {
return _redPacketAwardEndDate;
} else {
return _awardStartDate_redPacket;
}
}
/*购爱星期三活动 开始时间配置*/
public static Date getShopLoveWedStartDate() {
/**10分钟更新一次配置*/
if (_shopLoveWedStartDate_Love == null || ((System.currentTimeMillis() - time1) > 1000 * 60 * 10)) {
String statdate = WebUtils.getListOfValue("RP", "startShopLoveWedDate");
if (!StrUtil.isEmpty(statdate)) {
_shopLoveWedStartDate_Love = DateUtil.format(statdate);
}
time1 = System.currentTimeMillis();
}
if (_shopLoveWedStartDate_Love == null) {
return _shopLoveWedStartDate;
} else {
return _shopLoveWedStartDate_Love;
}
}
/*购爱星期三活动 结束时间配置*/
public static Date getShopLoveWedEndDate() {
/**10分钟更新一次配置*/
if (_shopLoveWedEndDate_Love == null || ((System.currentTimeMillis() - time1) > 1000 * 60 * 10)) {
String statdate = WebUtils.getListOfValue("RP", "endShopLoveWedDate");
if (!StrUtil.isEmpty(statdate)) {
_shopLoveWedEndDate_Love = DateUtil.format(statdate);
}
time1 = System.currentTimeMillis();
}
if (_shopLoveWedEndDate_Love == null) {
return _shopLoveWedEndDate;
} else {
return _shopLoveWedEndDate_Love;
}
}
/**
* 获得当前日期的字符串,格式参数 YYYY年MM月DD日
*
* @return
*/
public static String getDate(String datePattern) {
return new SimpleDateFormat(datePattern).format(Calendar.getInstance().getTime());
}
/**
* 获得当前日期的字符串,格式示例 YYYYMMDD
*
* @return
*/
public static String getDate() {
String datePattern = "yyyyMMdd";
return new SimpleDateFormat(datePattern).format(Calendar.getInstance().getTime());
}
/**
* 获取当前操作系统的时间
*
* @return 当前操作系统的时间
*/
public static String getTime() {
String timePattern = "HHmmss";
return new SimpleDateFormat(timePattern).format(Calendar.getInstance().getTime());
}
/**
* 将字符串解析为时间格式
* @param date
* @param df
* @return
* @throws ParseException
*/
public static Date parse(String date, DateFormat df) throws ParseException {
return df.parse(date);
}
/**
* 将字符串解析为时间格式
* @param date, 格式为'yyyy-MM-dd HH:mm:ss'
* @return
* @throws ParseException
*/
public static Date parse(String date) throws ParseException {
return FORMAT_yyyyMMddHHmmss_DEFAULT.parse(date);
}
/**
* 获取每周1-7日期(周一为每周第一天日期格式为:yyyy-MM-dd)
* @param value 周一至周日值为1-7
* @return
*/
public static String getDayOfWeek(int value){
calendar.setFirstDayOfWeek(Calendar.MONDAY);
switch (value) {
case 1:
calendar.set(calendar.DAY_OF_WEEK, Calendar.MONDAY);
break;
case 2:
calendar.set(calendar.DAY_OF_WEEK, Calendar.TUESDAY);
break;
case 3:
calendar.set(calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
break;
case 4:
calendar.set(calendar.DAY_OF_WEEK, Calendar.THURSDAY);
break;
case 5:
calendar.set(calendar.DAY_OF_WEEK, Calendar.FRIDAY);
break;
case 6:
calendar.set(calendar.DAY_OF_WEEK, Calendar.SATURDAY);
break;
default:
calendar.set(calendar.DAY_OF_WEEK, Calendar.SUNDAY);
break;
}
return FORMAT_yyyyMMdd.format(calendar.getTime());
}
/**
* 获取该月第一天日期(格式:yyyy-MM-dd)
* @return
*/
public static String getFirstayOfMonth(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-01");
return sdf.format(new Date());
}
/**
* 得到N天后的日期
* @param num
* @return
*/
public static String getDate(int num) {
long time = System.currentTimeMillis() + (1000L * 60 * 60 * 24 * num);
String pattern = "yyyy-MM-dd";
Date date = new Date();
if (time > 0) {
date.setTime(time);
}
SimpleDateFormat format = new SimpleDateFormat(pattern);
return format.format(date);
}
}