一、StringUtils类
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import net.sf.json.JSONObject;
import sun.misc.BASE64Decoder;
/**
* String工具
* 主要对 StringUtils 的一些方法进行重写,达到更方便的使用
* @author cai niao
*
*/
public class StringUtils extends org.apache.commons.lang.StringUtils{
/**
* 一次性判断多个或单个对象为空。
* @param objects
* @author cai niao
* @return 只要有一个元素为Blank,则返回true
*/
public static boolean isBlank(Object...objects){
Boolean result = false ;
for (Object object : objects) {
if(object == null || "".equals(object.toString().trim())
|| "null".equals(object.toString().trim())
|| "[null]".equals(object.toString().trim())
|| "[]".equals(object.toString().trim())){
result = true ;
break ;
}
}
return result ;
}
/**
* 一次性判断多个或单个对象不为空。
* @param objects
* @author zhou-baicheng
* @return 只要有一个元素不为Blank,则返回true
*/
public static boolean isNotBlank(Object...objects){
return !isBlank(objects);
}
public static String checkNullToConvert(Object obj) {
return StringUtils.isBlank(obj) ? "" : obj.toString();
}
/**
* 判断一个字符串在数组中存在几个
* @param baseStr
* @param strings
* @return
*/
public static int indexOf(String baseStr,String[] strings){
if(null == baseStr || baseStr.length() == 0 || null == strings)
return 0;
int i = 0;
for (String string : strings) {
boolean result = baseStr.equals(string);
i = result ? ++i : i;
}
return i ;
}
/**
* 判断一个字符串是否为JSONObject,是返回JSONObject,不是返回null
* @param args
* @return
*/
public static net.sf.json.JSONObject isJSONObject(Object args) {
net.sf.json.JSONObject result = null ;
if(args instanceof net.sf.json.JSONObject){
return (net.sf.json.JSONObject)args;
}
if(isBlank(args)){
return result ;
}
try {
return net.sf.json.JSONObject.fromObject(args);
} catch (Exception e) {
return result ;
}
}
/**
* 判断一个字符串是否为JSONArray,是返回JSONArray,不是返回null
* @param args
* @return
*/
public static net.sf.json.JSONArray isJSONArray(Object args) {
if(args instanceof net.sf.json.JSONArray){
return (net.sf.json.JSONArray)args;
}
net.sf.json.JSONArray result = null ;
if(isBlank(args)){
return result ;
}
try {
return net.sf.json.JSONArray.fromObject(args);
} catch (Exception e) {
return result ;
}
}
public static String trimToEmpty(Object str){
return (isBlank(str) ? "" : str.toString().trim());
}
/**
* 将 Strig 进行 BASE64 编码
* @param str [要编码的字符串]
* @param bf [true|false,true:去掉结尾补充的'=',false:不做处理]
* @return
*/
public static String getBASE64(String str,boolean...bf) {
if (StringUtils.isBlank(str)) return null;
String base64 = new sun.misc.BASE64Encoder().encode(str.getBytes()) ;
//去掉 '='
if(isBlank(bf) && bf[0]){
base64 = base64.replaceAll("=", "");
}
return base64;
}
/** 将 BASE64 编码的字符串 s 进行解码**/
public static String getStrByBASE64(String s) {
if (isBlank(s)) return "";
BASE64Decoder decoder = new BASE64Decoder();
try {
byte[] b = decoder.decodeBuffer(s);
return new String(b);
} catch (Exception e) {
return "";
}
}
/**
* 把Map转换成get请求参数类型,如 {"name"=20,"age"=30} 转换后变成 name=20&age=30
* @param map
* @return
*/
public static String mapToGet(Map<? extends Object,? extends Object> map){
String result = "" ;
if(map == null || map.size() ==0){
return result ;
}
Set<? extends Object> keys = map.keySet();
for (Object key : keys ) {
result += ((String)key + "=" + (String)map.get(key) + "&");
}
return isBlank(result) ? result : result.substring(0,result.length() - 1);
}
/**
* 把一串参数字符串,转换成Map 如"?a=3&b=4" 转换为Map{a=3,b=4}
* @param args
* @return
*/
public static Map<String, ? extends Object> getToMap(String args){
if(isBlank(args)){
return null ;
}
args = args.trim();
//如果是?开头,把?去掉
if(args.startsWith("?")){
args = args.substring(1,args.length());
}
String[] argsArray = args.split("&");
Map<String,Object> result = new HashMap<String,Object>();
for (String ag : argsArray) {
if(!isBlank(ag) && ag.indexOf("=")>0){
String[] keyValue = ag.split("=");
//如果value或者key值里包含 "="号,以第一个"="号为主 ,如 name=0=3 转换后,{"name":"0=3"}, 如果不满足需求,请勿修改,自行解决.
String key = keyValue[0];
String value = "" ;
for (int i = 1; i < keyValue.length; i++) {
value += keyValue[i] + "=";
}
value = value.length() > 0 ? value.substring(0,value.length()-1) : value ;
result.put(key,value);
}
}
return result ;
}
/**
* 转换成Unicode
* @param str
* @return
*/
public static String toUnicode(String str) {
String as[] = new String[str.length()];
String s1 = "";
for (int i = 0; i < str.length(); i++) {
as[i] = Integer.toHexString(str.charAt(i) & 0xffff);
s1 = s1 + "\\u" + as[i];
}
return s1;
}
public static String getDoubleTOString(Double str){
String money = str.toString();
try {
Double.parseDouble(money);
} catch (Exception e) {
BigDecimal bDecimal = new BigDecimal(str);
money = bDecimal.toPlainString();
}
return money;
}
/**
* 把数组转换成Set 方便判断
* @param objs
* @return
*/
public static TreeSet<String> arrayToSet(String[] objs){
TreeSet<String> result = new TreeSet<String>();
if(null ==objs){
return result ;
}
for (String obj:objs) {
result.add(obj);
}
return result;
}
/**
* 字符串转urlcode
* @param value
* @return
*/
public static String strToUrlcode(String value){
try {
value = java.net.URLEncoder.encode(value,"utf-8");
return value ;
} catch (UnsupportedEncodingException e) {
LoggerUtils.error(StringUtils.class, "字符串转换为URLCode失败,value:" + value,e);
e.printStackTrace();
return null;
}
}
/**
* urlcode转字符串
* @param value
* @return
*/
public static String urlcodeToStr(String value){
try {
value = java.net.URLDecoder.decode(value,"utf-8");
return value ;
} catch (UnsupportedEncodingException e) {
LoggerUtils.error(StringUtils.class, "URLCode转换为字符串失败;value:" + value,e);
e.printStackTrace();
return null;
}
}
/**
* 设置JSON字符串返回
*
* @param key
* @param value
* @return
*/
public static String setJsonString(String key, String value) {
if (StringUtils.isNotBlank(key, value)) {
JSONObject goodsJson = new JSONObject();
goodsJson.put(key, value);
return goodsJson.toString();
}
return "";
}
/**
* 替换字符串
*
* @param str
* @param nowStr
* @param replaceStr
* @return
*/
public static String replaceString(String str, String nowStr, String replaceStr) {
nowStr = StringUtils.isBlank(nowStr) ? "" : nowStr;
replaceStr = StringUtils.isBlank(replaceStr) ? "" : replaceStr;
if (StringUtils.isNotBlank(str)) {
return str.replaceAll(nowStr, replaceStr);
}
return "";
}
}
二、DateUtils 类
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Locale;
import net.sf.json.JSONObject;
import org.apache.log4j.Logger;
/**
*
* 区分 责任人 日期 说明<br/>
* <p>
* 时间工具类
* <p>
* @author
*
*
*/
public class DateUtils {
private static Logger log = Logger.getLogger(DateUtils.class);
/**当前毫秒值*/
public static long NOW_DATE_MIS =getNowTime();
/**根据方法获取**/
public static long getNowTime(){
return new Date().getTime();
}
/**
* 获取当前时间的年月日时分秒+时间戳后4位 如:20140620123456 18位
* @return
*/
public static String ymdhms4(){
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String s = sdf.format(date);
double a = Math.random() * 9000 + 1000;
int result = (int)a;
return s + result;
}
/**
* 把一个字符串时间转换为毫秒值 如 2014-12-12 12:12:12 转换为 1406086513619
* @param strDate
* @return
*/
public static long str2DateTime(String strDate){
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
Date date = new Date();
try {
date = df.parse(strDate);
} catch (ParseException pe) {
pe.getStackTrace();
}
return date.getTime() ;
}
/**
* 把一个日期转换为指定的格式
*/
public static Date str2Date(String strDate, String formater) {
if (strDate == null) {
return null;
}
if (formater == null) {
formater = "yyyy-MM-dd";
}
SimpleDateFormat df = new SimpleDateFormat(formater);
Date date = new Date();
try {
date = df.parse(strDate);
} catch (ParseException pe) {
pe.getStackTrace();
}
return date;
}
/**
* 获取最大毫秒值
* @param dateStr 2014-12-12 年-月-日 参数
* @return
*/
public static Long getMaxMillsByYMD(String dateStr){
if(StringUtils.isBlank(dateStr)){
log.error("getTodayMaxMills error , message :param is empty");
return null;
}
dateStr = dateStr.trim() + " 23:59:59";
Date date = ymdHmsStr2Date(dateStr);
return date.getTime() ;
}
/**
* 获取最小毫秒值
* @param dateStr 2014-12-12 年月日参数
* @return
*/
public static Long getMinxMillsByYMD(String dateStr){
if(StringUtils.isBlank(dateStr)){
log.error("getTodayMaxMills error , message :param is empty");
return null;
}
dateStr = dateStr.trim() + " 00:00:00";
Date date = ymdHmsStr2Date(dateStr);
return date.getTime() ;
}
public static String getNextMonth() {
Calendar c = Calendar.getInstance();
c.set(Calendar.DATE, 1);// 设为当前月的1号
c.add(Calendar.MONTH, 1);// 加一个月,变为下月的1号
return formaterDate(c.getTime(), "yyyy-MM");
}
public static String getPreviousMonth() {
Calendar c = Calendar.getInstance();
c.set(Calendar.DATE, 1);// 设为当前月的1号
c.add(Calendar.MONTH, -1);// 减一个月,变为上月的1号
return formaterDate(c.getTime(), "yyyy-MM");
}
public static String getMonth(String date,int num) {
Calendar c = Calendar.getInstance();
if(StringUtils.isNotEmpty(date)){
c.setTime(DateUtils.ymdStr2Date(date));
}
c.set(Calendar.DATE, 1);// 设为当前月的1号
c.add(Calendar.MONTH, num);// 减一个月,变为上月的1号
return formaterDate(c.getTime(), "yyyy-MM-dd");
}
/**
* 计算两个日期之间相差的月数
* @param date1
* @param date2
* @return
*/
public static int getMonths(Date date1, Date date2) {
int iMonth = 0;
int flag = 0;
try {
Calendar objCalendarDate1 = Calendar.getInstance();
objCalendarDate1.setTime(date1);
Calendar objCalendarDate2 = Calendar.getInstance();
objCalendarDate2.setTime(date2);
if (objCalendarDate2.equals(objCalendarDate1))
return 0;
if (objCalendarDate1.after(objCalendarDate2)) {
Calendar temp = objCalendarDate1;
objCalendarDate1 = objCalendarDate2;
objCalendarDate2 = temp;
}
if (objCalendarDate2.get(Calendar.DAY_OF_MONTH) < objCalendarDate1
.get(Calendar.DAY_OF_MONTH))
flag = 1;
if (objCalendarDate2.get(Calendar.YEAR) > objCalendarDate1
.get(Calendar.YEAR))
iMonth = ((objCalendarDate2.get(Calendar.YEAR) - objCalendarDate1
.get(Calendar.YEAR))
* 12 + objCalendarDate2.get(Calendar.MONTH) - flag)
- objCalendarDate1.get(Calendar.MONTH);
else
iMonth = objCalendarDate2.get(Calendar.MONTH) - objCalendarDate1.get(Calendar.MONTH) - flag;
} catch (Exception e) {
e.printStackTrace();
}
return iMonth;
}
@SuppressWarnings("unchecked")
public static List getMonthList(String startDate,String endDate){
if(StringUtils.isEmpty(startDate) || StringUtils.isEmpty(endDate)) {
return new ArrayList();
}
List<String> dateList = new ArrayList<String>();
//得到两个日期之间有多少月
int num = getMonths(ymdStr2Date(startDate),ymdStr2Date(endDate));
Calendar c = Calendar.getInstance();
c.setTime(DateUtils.ymdStr2Date(startDate));
dateList.add(formaterDate(c.getTime(), "yyyy-MM"));
for(int i=0; i<num; i++){
c.set(Calendar.DATE, 1);
c.add(Calendar.MONTH, 1);
dateList.add(formaterDate(c.getTime(), "yyyy-MM"));
}
return dateList;
}
/**
* 获取当前星期(中国, 如:星期日,星期一,星期二)
*/
public static String cnWeek() {
Calendar c = GregorianCalendar.getInstance();
c.setFirstDayOfWeek(Calendar.SUNDAY);
String[] s = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
return s[c.get(Calendar.DAY_OF_WEEK) - 1];
}
/**
* 得到当前日期 再加上你指定的天数 所得到的新日期
* @param days
* @return
*/
public static Date getNewDayNumDate(int days){
String today = getToday();
String newDay = getNewDayNumDate(today,days);
return ymdStr2Date(newDay);
}
// 计算当月最后一天,返回字符串
public static String getMonthLastDay() {
Calendar c = Calendar.getInstance();
c.set(Calendar.DATE, 1);// 设为当前月的1号
c.add(Calendar.MONTH, 1);// 加一个月,变为下月的1号
c.add(Calendar.DATE, -1);// 减去一天,变为当月最后一天
return ymd(c.getTime());
}
// 计算当月第一天,返回字符串
public static String getMonthFirstDay() {
Calendar c = Calendar.getInstance();
c.set(Calendar.DATE, 1);// 设为当前月的1号
return ymd(c.getTime());
}
/**
* 获得前十天时间
*
* @param date
* @return
*/
public static String getPrevTenDay(int day) {
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR) - day);
return ymdHms(c.getTime());
}
/**
* 得到一个日期是周几
*/
public static String getWeekCS(Date date) {
Calendar c = GregorianCalendar.getInstance();
c.setTime(date);
c.setFirstDayOfWeek(Calendar.SUNDAY);
String[] s = { "sunday", "monday", "tuesday", "wednesday",
"thursday", "friday", "saturday" };
return s[c.get(Calendar.DAY_OF_WEEK) - 1];
}
/**
* 得到一个日期是周几
*/
public static String getWeekInNum(Date date) {
Calendar c = GregorianCalendar.getInstance();
c.setTime(date);
int weekDayNum = c.get(Calendar.DAY_OF_WEEK)-1;
if(weekDayNum == 0){
weekDayNum = 7;
}
return String.valueOf(weekDayNum);
}
/**
* 取传入时间的小时值
* @param endDate
* @return
*/
public static String makeHour(Date endDate) {
String hour = "";
if (endDate != null) {
DateFormat format = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
String after = format.format(endDate);
hour = after.substring(11, 13);
}
return hour;
}
public static String makeMini(Date endDate) {
String mini = "";
if (endDate != null) {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String after = format.format(endDate);
mini = after.substring(14, 16);
}
return mini;
}
/**
* 得到当前时间的 小时和分(hh:mm)
* @param date
* @return
*/
public static String getHourAndMinute(Date date){
String hour = makeHour(date);
String minute = makeMini(date);
return hour + ":" + minute;
}
@SuppressWarnings("unchecked")
public static List getTomorrowList() {
List<String> dateList = new ArrayList<String>();
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String tomorrow = sdf.format(calendar.getTime());
dateList.add(tomorrow);
for (int i = 0; i < 6; i++) {
calendar.set(6, calendar.get(6) + 1);
tomorrow = sdf.format(calendar.getTime());
dateList.add(tomorrow);
}
return dateList;
}
public static String getWeekStartDateString(String startDate) {
return getWeekDateString(startDate, 0);
}
public static String getWeekEndDateString(String endDate) {
return getWeekDateString(endDate, 6);
}
public static String getWeekDateString(String currentDate, int day) {
// 日历
Calendar calendar = new GregorianCalendar();
// 设置日历为当前时间
calendar.setTime(ymdStr2Date(currentDate));
// 得到今天是周几
int dayofweek = calendar.get(Calendar.DAY_OF_WEEK);
int weekofYear = calendar.get(Calendar.WEEK_OF_YEAR);
// 加入不是周日,设置日期到下一周
if (dayofweek == 1) {
calendar.set(Calendar.WEEK_OF_YEAR, weekofYear - 1);
}
int nextWeekDay = calendar.get(Calendar.DATE);
// 设置日历为下周第一天,+2是下周从星期一开始,星期一是每周的第2天
calendar.set(Calendar.DATE, nextWeekDay - dayofweek + 2);
calendar.add(Calendar.DATE, day);
return ymd(calendar.getTime());
}
public static Date[] getWeekStartAndEndDate(Date currentDate, int start) {
// 将要返回的日期
Date[] days = new Date[2];
if(null != currentDate){
// 日历
Calendar calendar = new GregorianCalendar();
// 设置日历为当前时间
calendar.setTime(currentDate);
// 得到今天是周几
int dayofweek = calendar.get(Calendar.DAY_OF_WEEK);
int weekofYear = calendar.get(Calendar.WEEK_OF_YEAR);
// 加入不是周日,设置日期到下一周
if (dayofweek == 1) {
calendar.set(Calendar.WEEK_OF_YEAR, weekofYear - 1);
}
// 得到当前是全年的第几周
int nextWeekDay = calendar.get(Calendar.DATE);
// 设置日历为下周第一天,+5是下周从星期四开始,星期四是每周的第5天
calendar.set(Calendar.DATE, nextWeekDay - dayofweek + 2);
calendar.add(Calendar.DATE, start);
days[0] = calendar.getTime();
days[0] = ymdHmsStr2Date(ymd(days[0]) + " 00:00:00");
calendar.add(Calendar.DATE, 6);
days[1] = calendar.getTime();
days[1] = ymdHmsStr2Date(ymd(days[1]) + " 23:59:59");
}
return days;
}
public static String[] getWeekStartAndEndDate(String currentDate, int start) {
// 将要返回的日期
String[] days = new String[2];
if(StringUtils.isEmpty(currentDate)){
return days;
}
// 日历
Calendar calendar = new GregorianCalendar();
// 设置日历为当前时间
calendar.setTime(ymdStr2Date(currentDate));
// 得到今天是周几
int dayofweek = calendar.get(Calendar.DAY_OF_WEEK);
int weekofYear = calendar.get(Calendar.WEEK_OF_YEAR);
// 加入不是周日,设置日期到下一周
if (dayofweek == 1) {
if(weekofYear == 1){
weekofYear = 53;
}
calendar.set(Calendar.WEEK_OF_YEAR, weekofYear - 1);
}
// 得到当前是全年的第几周
int nextWeekDay = calendar.get(Calendar.DATE);
calendar.set(Calendar.DATE, nextWeekDay - dayofweek + 2);
calendar.add(Calendar.DATE, start);
days[0] = ymd(calendar.getTime());
calendar.add(Calendar.DATE, 6);
days[1] = ymd(calendar.getTime());
return days;
}
public static String[] getThisWeekStartEndDays() {
return getWeekStartAndEndDate(ymd(new Date()), 0);
}
public static String[] getLastWeekStartEndDays() {
return getWeekStartAndEndDate(ymd(new Date()), -7);
}
public static String[] getNextWeekStartEndDays() {
return getWeekStartAndEndDate(ymd(new Date()), 7);
}
@SuppressWarnings("unchecked")
public static List getWeekDateList(String date) throws ParseException {
List<String> dateList = new ArrayList<String>();
Calendar calendar = Calendar.getInstance();
SimpleDateFormat ymd = new SimpleDateFormat("yyyy-MM-dd");
Date dateVar = ymd.parse(date);
calendar.setTime(dateVar);
dateList.add(date);
for (int i = 1; i <= 6; i++) {
calendar.set(6, calendar.get(6) + 1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String tomorrow = sdf.format(calendar.getTime());
dateList.add(tomorrow);
}
return dateList;
}
public static String getNextDay(String currentDate) {
Date d = ymdStr2Date(currentDate);
Calendar c = Calendar.getInstance();
c.setTime(d);
c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR) + 1);
return ymd(c.getTime());
}
/**
* 获得开始时间和结束时间之间的时间列表
* @param startDate
* @param endDate
* @return List<String>
* @throws ParseException
*/
@SuppressWarnings("unchecked")
public static List getDateList(String startDate, String endDate) throws ParseException {
List<String> dateList = new ArrayList<String>();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH); // 设定格式
Date start = dateFormat.parse(startDate);
Date end = dateFormat.parse(endDate);
long day = ((end.getTime() - start.getTime()) / 1000);// 秒数
day = day / (60 * 60 * 24); // 天数
for (int i = 0; i <= day; i++) {
String date = getAfterSomeDayYms(startDate, i);
dateList.add(date);
}
return dateList;
}
/**
* 判断所给时间在月的第几周
* @param date 输入时间
* @return 第几周
*/
public static int weekOfMonth(String date) {
Date d = ymdStr2Date(date);
Calendar c = Calendar.getInstance();
c.setTime(d);
return c.get(Calendar.WEEK_OF_MONTH);
}
/**
* 获取当前星期几
*/
public static int weekDay(String date) {
Date d = ymdStr2Date(date);
Calendar c = Calendar.getInstance();
c.setTime(d);
c.setFirstDayOfWeek(Calendar.SUNDAY);
return c.get(Calendar.DAY_OF_WEEK)-1;
}
/**
* 返回日期date 前推beforHour小时后的 日期
* @param date
* @param beforHour
* @return
*/
public static Date getBeforHourDate(Date date, int beforHour){
if(date != null){
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.HOUR, c.get(Calendar.HOUR)-beforHour);
return c.getTime();
}
return null;
}
/**
* 取给定日期的前一天
* @param date
* @return
*/
public static Date getLastDay(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_YEAR,
calendar.get(Calendar.DAY_OF_YEAR) - 1);
return calendar.getTime();
}
/**
* 返回两时间的相差天数
* @param d1
* @param d2
* @return
*/
public static int getDayNumBetween2Date(Date d1, Date d2){
if(isEqualsInYMD(d1, d2)){
return 0;
}
long l = d2.getTime()-d1.getTime();
int day = (int) (l/(24*60*60*1000));
if(day < 0){
day = (-day);
}
int m = (int) (l%(24*60*60*1000));
Calendar c = Calendar.getInstance();
if(d1.compareTo(d2)<=0){
c.setTime(d1);
c.add(Calendar.MILLISECOND, m);
if(isEqualsInYMD(d1, c.getTime())){
return day;
}else{
return day+1;
}
}else{
c.setTime(d2);
c.add(Calendar.MILLISECOND, m);
if(isEqualsInYMD(d2, c.getTime())){
return day;
}else{
return day+1;
}
}
}
/**
* 两个时间是否是 同年 同月 同日
* 如果是,则返回true,否则返回false
* @param d1
* @param d2
* @return
*/
public static boolean isEqualsInYMD(Date d1, Date d2){
Calendar c = Calendar.getInstance();
c.setTime(d1);
int year1 = c.get(Calendar.YEAR);
int dayOfYear1 = c.get(Calendar.DAY_OF_YEAR);
c.setTime(d2);
int year2 = c.get(Calendar.YEAR);
int dayOfYear2 = c.get(Calendar.DAY_OF_YEAR);
if(year1 != year2){
return false;
}
if(dayOfYear1 != dayOfYear2){
return false;
}
return true;
}
/**
* 获得当前月的前 i 个月
* @param i (henrry)
* return 月的数组
*/
public static String[] getMonthArr(int i){
String arr[] = new String[i];
Calendar c = Calendar.getInstance();
int temp = 0;
int tempp = 0;
int year = 0;
int month = 0;
int m = i-1;
for(int j=0;j<m;j++){
if(i>12){
temp = (i-1)/12;
tempp = (i-1)%12;
year = c.get(Calendar.YEAR)-temp;
month = c.get(Calendar.MONTH)-tempp+1;
if(month<10 && month >0){
arr[j] = year+"-0"+month;
}else if(month<0){
month = 12+month;
if(month<10){
arr[j] = (year-1)+"-0"+month;
}else{
arr[j] = (year-1)+"-"+month;
}
}else if(month == 0){
arr[j] = (year-1)+"-"+12;
}else{
arr[j] = year+"-"+month;
}
}else{
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH)-i+2;
if(month<10 && month >0){
arr[j] = year+"-0"+month;
}else if(month<0){
month = 12+month;
if(month<10){
arr[j] = (year-1)+"-0"+month;
}else{
arr[j] = (year-1)+"-"+month;
}
}else if(month==0){
arr[j] = (year-1)+"-"+12;
}else{
arr[j] = year+"-"+month;
}
}
i--;
}
int monthNow = c.get(Calendar.MONTH);
if(monthNow>8){
arr[m] = c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH)+1);
}else{
arr[m] = c.get(Calendar.YEAR) + "-0" + (c.get(Calendar.MONTH)+1);
}
return arr;
}
/**
* 得到两个时间之间的差距,根据type可返回分别以天,时,分为单位的整数
* @param d1
* @param d2
* @param type
* @return
*/
public static int getBetweenDateGap(Date d1, Date d2, String type){
long time1 = d1.getTime();
long time2 = d2.getTime();
long m = (time1-time2)/1000;
int nDay = (int)m/(24*60*60);
int nHour = (int)(m-nDay*24*60*60)/(60*60);
int nMinute = (int)(m-nDay*24*60*60-nHour*60*60)/60;
int mSecond = (int)(m-nDay*24*60*60-nHour*60*60);
if("day".equals(type)){
return nDay;
}else if("minute".equals(type)){
return nMinute;
}else if("hour".equals(type)){
return nHour;
}else if("second".equals(type)){
return mSecond;
}
return nMinute;
}
/**
* *
* 通过月份计算季度 *
* @param
* month *
* @return
*/
public static int getQuarter(int month) {
if (month < 1 || month > 12) {
throw new IllegalArgumentException("month is invalid.");
}
return (month - 1) / 3 + 1;
}
}