JAVA日期相关的方法总结
2017-07-06 18:22
393 查看
package julit.framework.common.util;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class DateUtil {
/**
* ORA标准时间格式
*/
private static final SimpleDateFormat ORA_DATE_TIME_FORMAT = new SimpleDateFormat(
“yyyyMMddHHmm”);
public static synchronized String compareTwoDate(Date date1,Date date2){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date1);
//GregorianCalendar c1 = new GregorianCalendar(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH),calendar.get(Calendar.HOUR),calendar.get(Calendar.MINUTE),calendar.get(Calendar.SECOND));
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(date2);
}
public static synchronized double compareDate(Date date1,Date date2){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date1);
//GregorianCalendar c1 = new GregorianCalendar(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH),calendar.get(Calendar.HOUR),calendar.get(Calendar.MINUTE),calendar.get(Calendar.SECOND));
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(date2);
//GregorianCalendar c2 = new GregorianCalendar(calendar1.get(Calendar.YEAR),calendar1.get(Calendar.MONTH),calendar1.get(Calendar.DAY_OF_MONTH),calendar1.get(Calendar.HOUR),calendar1.get(Calendar.MINUTE),calendar1.get(Calendar.SECOND));
//double timeLong=c2.getTimeInMillis()-c1.getTimeInMillis();
double timeLong = calendar1.getTimeInMillis()- calendar.getTimeInMillis();
return timeLong;
}
/**
* 两个日期date1与date2比较,得到(date2-date1)的小时差
* @param date1
* @param date2
* @return
*/
public static synchronized int getTwoDateHours(Date date1,Date date2){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date1);
//GregorianCalendar c1 = new GregorianCalendar(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH),calendar.get(Calendar.HOUR),calendar.get(Calendar.MINUTE),calendar.get(Calendar.SECOND));
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(date2);
//GregorianCalendar c2 = new GregorianCalendar(calendar1.get(Calendar.YEAR),calendar1.get(Calendar.MONTH),calendar1.get(Calendar.DAY_OF_MONTH),calendar1.get(Calendar.HOUR),calendar1.get(Calendar.MINUTE),calendar1.get(Calendar.SECOND));
//double timeLong=c2.getTimeInMillis()-c1.getTimeInMillis();
double timeLong = calendar1.getTimeInMillis()- calendar.getTimeInMillis();
return new Double(timeLong/1000/3600).intValue();
}
/**
* 两个日期date1与date2比较,得到(date2-date1)的日期差
* @param date1
* @param date2
* @return
*/
public static synchronized int getTwoDateDays(Date date1,Date date2){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date1);
//GregorianCalendar c1 = new GregorianCalendar(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH),calendar.get(Calendar.HOUR),calendar.get(Calendar.MINUTE),calendar.get(Calendar.SECOND));
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(date2);
//GregorianCalendar c2 = new GregorianCalendar(calendar1.get(Calendar.YEAR),calendar1.get(Calendar.MONTH),calendar1.get(Calendar.DAY_OF_MONTH),calendar1.get(Calendar.HOUR),calendar1.get(Calendar.MINUTE),calendar1.get(Calendar.SECOND));
//double timeLong=c2.getTimeInMillis()-c1.getTimeInMillis();
double timeLong = calendar1.getTimeInMillis()- calendar.getTimeInMillis();
//2013.12.09yang这里将两个日期比较的值四舍五入一下,不然两个值
String numStr = String.valueOf(new BigDecimal(String.valueOf(timeLong/1000/3600/24)).setScale(0, BigDecimal.ROUND_HALF_UP));
//System.out.println(numStr);
return new Integer(numStr).intValue();
}
/**
* 将两个scorm时间相加
* @param scormTime1 scorm时间,格式为00:00:00(1..2).0(1..3)
* @param scormTime2 scorm时间,格式为00:00:00(1..2).0(1..3)
* @return
*/
public static synchronized String addTwoScormTime(String scormTime1,String scormTime2){
int dotIndex1 = scormTime1.indexOf(“.”);
int hh1 = Integer.parseInt(scormTime1.substring(0,2));
int mm1 = Integer.parseInt(scormTime1.substring(3,5));
int ss1 = Integer.parseInt(scormTime1.substring(6,dotIndex1));
int ms1 = Integer.parseInt(scormTime1.substring(dotIndex1 + 1,scormTime1.length()));
}
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class DateUtil {
/**
* ORA标准时间格式
*/
private static final SimpleDateFormat ORA_DATE_TIME_FORMAT = new SimpleDateFormat(
“yyyyMMddHHmm”);
/** * 带时分秒的ORA标准时间格式 */ private static final SimpleDateFormat ORA_DATE_TIME_EXTENDED_FORMAT = new SimpleDateFormat( "yyyyMMddHHmmss"); /** * 带时分秒的ORA标准时间格式 */ private static final SimpleDateFormat ORA_DATE_FORMAT = new SimpleDateFormat( "yyyy-MM-dd"); private static final SimpleDateFormat ORA_DATE_FORMAT_MD = new SimpleDateFormat( "MM月dd号"); private static final SimpleDateFormat ORA_DATE_FORMAT_ = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private static final SimpleDateFormat ORA_DATE_FORMAT2 = new SimpleDateFormat( "yyyy/MM/dd"); private static final SimpleDateFormat ORA_DATE_FORMAT_2 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); /** * 创建一个标准ORA时间格式的克隆 * * @return 标准ORA时间格式的克隆 */ private static synchronized DateFormat getOraDateTimeFormat() { SimpleDateFormat theDateTimeFormat = (SimpleDateFormat) ORA_DATE_TIME_FORMAT .clone(); theDateTimeFormat.setLenient(false); return theDateTimeFormat; } public static String toOnlyDateFormat(Date d){ try{ return ORA_DATE_FORMAT.format(d); }catch(Exception ex){ return ""; } } public static String toOnlyDateFormatMd(Date d){ try{ return ORA_DATE_FORMAT_MD.format(d); }catch(Exception ex){ return ""; } } public static String toOnlyDateFormat_(Date d){ try{ return ORA_DATE_FORMAT_.format(d); }catch(Exception ex){ return ""; } } public static String toOnlyDateFormat2(Date d){ try{ return ORA_DATE_FORMAT2.format(d); }catch(Exception ex){ return ""; } } public static String toOnlyDateFormat_2(Date d){ try{ return ORA_DATE_FORMAT_2.format(d); }catch(Exception ex){ return ""; } } /** * 创建一个带分秒的ORA时间格式的克隆 * * @return 标准ORA时间格式的克隆 */ private static synchronized DateFormat getOraExtendDateTimeFormat() { SimpleDateFormat theDateTimeFormat = (SimpleDateFormat) ORA_DATE_TIME_EXTENDED_FORMAT .clone(); theDateTimeFormat.setLenient(false); return theDateTimeFormat; } public static String getSystemCurrentYear(){ Calendar c = Calendar.getInstance(); c.setTimeInMillis(System.currentTimeMillis()); return String.valueOf(c.get(Calendar.YEAR)); } public static String getSystemCurrentMonth(){ Calendar c = Calendar.getInstance(); c.setTimeInMillis(System.currentTimeMillis()); return String.valueOf(c.get(Calendar.MONTH)+1); } public static String getSystemCurrentDay(){ Calendar c = Calendar.getInstance(); c.setTimeInMillis(System.currentTimeMillis()); return String.valueOf(c.get(Calendar.DAY_OF_MONTH)); } public static String getSystemCurrentYearLast2Bits(){ String year = getSystemCurrentYear(); return year.length()>2?year.substring(year.length()-2):year; } /** * 得到系统当前的日期 格式为YYYY-MM-DD * * @return */ public static String getSystemCurrentDate() { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); return doTransform(calendar.get(Calendar.YEAR), calendar .get(Calendar.MONTH) + 1, calendar.get(Calendar.DAY_OF_MONTH)); } /** * 得到下个月这个时候的系统的日期 格式为YYYY-MM-DD(当现在月份为12月时,此时这里的月份为13) * * @return */ public static String getSystemCurrentDate_NextMonth() { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); return doTransform(calendar.get(Calendar.YEAR), calendar .get(Calendar.MONTH) + 2, calendar.get(Calendar.DAY_OF_MONTH)); } /** * 返回格式为YYYY-MM-DD * * @param year * 年 * @param month * 月 * @param day * 日 * @return */ private static String doTransform(int year, int month, int day) { StringBuffer result = new StringBuffer(); result.append(String.valueOf(year)).append("-").append( month < 10 ? "0" + String.valueOf(month) : String .valueOf(month)).append("-").append( day < 10 ? "0" + String.valueOf(day) : String.valueOf(day)); return result.toString(); } /** * 得到系统当前的日期和时间 格式为YYYY-MM-DD hh:mm:ss * * @return */ public static final String getSystemCurrentDateTime() { Calendar newCalendar = Calendar.getInstance(); newCalendar.setTimeInMillis(System.currentTimeMillis()); int year = newCalendar.get(Calendar.YEAR); int month = newCalendar.get(Calendar.MONTH) + 1; int day = newCalendar.get(Calendar.DAY_OF_MONTH); int hour = newCalendar.get(Calendar.HOUR_OF_DAY); int minute = newCalendar.get(Calendar.MINUTE); int second = newCalendar.get(Calendar.SECOND); return doTransform(year, month, day, hour, minute, second); } /** * 得到系统当前的时间 格式为hh:mm:ss * @return */ public static final String getSystemCurrentTime() { return getSystemCurrentDateTime().substring(11, 19); } /** * 返回格式为YYYY-MM-DD hh:mm:ss * * @param year * 年 * @param month * 月 * @param day * 日 * @param hour * 小时 * @param minute * 分钟 * @param second * 秒 * @return */ private static final String doTransform(int year, int month, int day, int hour, int minute, int second) { StringBuffer result = new StringBuffer(); result.append(String.valueOf(year)).append("-") .append(month < 10 ? "0" + String.valueOf(month) : String.valueOf(month)).append("-") .append(day < 10 ? "0" + String.valueOf(day) : String.valueOf(day)).append(" ") .append(hour < 10 ? "0" + String.valueOf(hour) : String.valueOf(hour)).append(":") .append(minute < 10 ? "0" + String.valueOf(minute) : String.valueOf(minute)).append(":") .append(second < 10 ? "0" + String.valueOf(second) : String.valueOf(second)); return result.toString(); } /** * 获得昨天的日期 * * @return 指定日期的下一天 格式:YYYY-MM-DD */ public static synchronized String getDayBeforeToday() { Date date = new Date(System.currentTimeMillis()); GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance(); gc.setTime(date); gc.add(Calendar.DATE, -1); return doTransform(toString(gc.getTime(),getOraDateTimeFormat())); } /** * 获得明天的日期 * * @return 指定日期的下一天 格式:YYYY-MM-DD */ public static synchronized String getDayAfterToday() { Date date = new Date(System.currentTimeMillis()); GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance(); gc.setTime(date); gc.add(Calendar.DATE, 1); return doTransform(toString(gc.getTime(),getOraExtendDateTimeFormat())).substring(0,10); } /** * 获得明天的日期 * * @return 指定日期的下一天 格式:YYYY-MM-DD */ public static synchronized String getNextDay(String date) { Date date1 = toSimpleDate(date); GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance(); gc.setTime(date1); gc.add(Calendar.DATE, 1); return doTransform(toString(gc.getTime(),getOraExtendDateTimeFormat())).substring(0,10); } /** * 获得以后几个月的日期 * * @return 指定日期的后面几个月 格式:YYYY-MM-DD */ public static synchronized Date getDayAfterMonth(int months){ Date date = new Date(System.currentTimeMillis()); GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance(); gc.setTime(date); gc.add(Calendar.MONTH, months); return gc.getTime(); } /** * 返回格式为YYYY-MM-DD hh:mm:ss * @param date 输入格式为ORA标准时间格式 * @return */ public static String doTransform(String date){ StringBuffer buffer = new StringBuffer(); buffer.append(date.substring(0,4)); buffer.append("-"); buffer.append(date.substring(4,6)); buffer.append("-"); buffer.append(date.substring(6,8)); buffer.append(" "); buffer.append(date.substring(8,10)); buffer.append(":"); buffer.append(date.substring(10,12)); buffer.append(":"); buffer.append(date.substring(12,14)); return buffer.toString(); } /** * 将一个日 4000 期对象转换成为指定日期、时间格式的字符串。 如果日期对象为空,返回一个空字符串对象. * * @param theDate * 要转换的日期对象 * @param theDateFormat * 返回的日期字符串的格式 * @return 转换结果 */ public static synchronized String toString(Date theDate, DateFormat theDateFormat) { if (theDate == null) { return ""; } else { return theDateFormat.format(theDate); } } /** * 将Date类型转换后返回本系统默认的日期格式 YYYY-MM-DD hh:mm:ss * @param theDate * @return */ public static synchronized String toDefaultString(Date theDate){ if(theDate == null){ return ""; } return doTransform(toString(theDate,getOraExtendDateTimeFormat())); } /** * 将输入格式为2004-8-13 12:31:22类型的字符串转换为标准的Date类型 * @param dateStr * @return */ public static synchronized Date toDate(String dateStr){ String[] list0 = dateStr.split(" "); String date = list0[0]; String time = list0[1]; String[] list1 = date.split("-"); int year = new Integer(list1[0]).intValue(); int month = new Integer(list1[1]).intValue(); int day = new Integer(list1[2]).intValue(); String[] list2 = time.split(":"); int hour = new Integer(list2[0]).intValue(); int min = new Integer(list2[1]).intValue(); int second = new Integer(list2[2]).intValue(); Calendar cale = Calendar.getInstance(); cale.set(year,month-1,day,hour,min,second); return cale.getTime(); } /** * 将输入格式为2004-8-13类型的字符串转换为标准的Date类型 * @param dateStr * @return */ public static synchronized Date toSimpleDate(String dateStr){ try{ String[] list = dateStr.split("-"); int year = new Integer(list[0]).intValue(); int month = new Integer(list[1]).intValue(); int day = new Integer(list[2]).intValue(); Calendar cale = Calendar.getInstance(); cale.set(year,month-1,day,0,0,0); return cale.getTime(); }catch(Exception ex){ return null; } } public static synchronized Date toSimpleDate(String year, String month, String date){ try{ String str = year + "-" + Converter.padding(month, 2, '0', true) + "-" + Converter.padding(date, 2, '0', true); return toSimpleDate(str); }catch(Exception ex){ return null; } } /** * 将输入格式为2004-8-13,2004-10-8类型的字符串转换为标准的Date类型,这种Date类型 * 对应的日期格式为YYYY-MM-DD 00:00:00,代表一天的开始时刻 * @param dateStr * @return */ public static synchronized Date toDayStartDate(String dateStr){ String[] list = dateStr.split("-"); int year = new Integer(list[0]).intValue(); int month = new Integer(list[1]).intValue(); int day = new Integer(list[2]).intValue(); Calendar cale = Calendar.getInstance(); cale.set(year,month-1,day,0,0,0); return cale.getTime(); } /** * 将输入格式为2004-8-13,2004-10-8类型的字符串转换为标准的Date类型,这种Date类型 * 对应的日期格式为YYYY-MM-DD 23:59:59,代表一天的结束时刻 * @param dateStr 输入格式:2004-8-13,2004-10-8 * @return */ public static synchronized Date toDayEndDate(String dateStr){ String[] list = dateStr.split("-"); int year = new Integer(list[0]).intValue(); int month = new Integer(list[1]).intValue(); int day = new Integer(list[2]).intValue(); Calendar cale = Calendar.getInstance(); cale.set(year,month-1,day,23,59,59); return cale.getTime(); }
public static synchronized String compareTwoDate(Date date1,Date date2){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date1);
//GregorianCalendar c1 = new GregorianCalendar(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH),calendar.get(Calendar.HOUR),calendar.get(Calendar.MINUTE),calendar.get(Calendar.SECOND));
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(date2);
//GregorianCalendar c2 = new GregorianCalendar(calendar1.get(Calendar.YEAR),calendar1.get(Calendar.MONTH),calendar1.get(Calendar.DAY_OF_MONTH),calendar1.get(Calendar.HOUR),calendar1.get(Calendar.MINUTE),calendar1.get(Calendar.SECOND)); double timeLong = calendar1.getTimeInMillis()- calendar.getTimeInMillis(); //double timeLong=c2.getTimeInMillis()-c1.getTimeInMillis(); int hourNum=(int)(timeLong/1000/3600); int minuteNum = (int)((timeLong%(1000*3600))/1000/60); int secondNum = (int)(((timeLong%(1000*3600))%(1000*60))/1000); String hourStr=""; if(hourNum<10){ hourStr="0"+new Integer(hourNum).toString(); }else{ hourStr= new Integer(hourNum).toString(); } String minuteStr=""; if(minuteNum<10){ minuteStr="0"+new Integer(minuteNum).toString(); }else{ minuteStr=new Integer(minuteNum).toString(); } String secondStr=""; if(secondNum<10){ secondStr="0"+new Integer(secondNum).toString(); }else{ secondStr=new Integer(secondNum).toString(); } String time = hourStr+":"+minuteStr+":"+secondStr; return time;
}
public static synchronized double compareDate(Date date1,Date date2){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date1);
//GregorianCalendar c1 = new GregorianCalendar(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH),calendar.get(Calendar.HOUR),calendar.get(Calendar.MINUTE),calendar.get(Calendar.SECOND));
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(date2);
//GregorianCalendar c2 = new GregorianCalendar(calendar1.get(Calendar.YEAR),calendar1.get(Calendar.MONTH),calendar1.get(Calendar.DAY_OF_MONTH),calendar1.get(Calendar.HOUR),calendar1.get(Calendar.MINUTE),calendar1.get(Calendar.SECOND));
//double timeLong=c2.getTimeInMillis()-c1.getTimeInMillis();
double timeLong = calendar1.getTimeInMillis()- calendar.getTimeInMillis();
return timeLong;
}
/**
* 两个日期date1与date2比较,得到(date2-date1)的小时差
* @param date1
* @param date2
* @return
*/
public static synchronized int getTwoDateHours(Date date1,Date date2){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date1);
//GregorianCalendar c1 = new GregorianCalendar(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH),calendar.get(Calendar.HOUR),calendar.get(Calendar.MINUTE),calendar.get(Calendar.SECOND));
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(date2);
//GregorianCalendar c2 = new GregorianCalendar(calendar1.get(Calendar.YEAR),calendar1.get(Calendar.MONTH),calendar1.get(Calendar.DAY_OF_MONTH),calendar1.get(Calendar.HOUR),calendar1.get(Calendar.MINUTE),calendar1.get(Calendar.SECOND));
//double timeLong=c2.getTimeInMillis()-c1.getTimeInMillis();
double timeLong = calendar1.getTimeInMillis()- calendar.getTimeInMillis();
return new Double(timeLong/1000/3600).intValue();
}
/**
* 两个日期date1与date2比较,得到(date2-date1)的日期差
* @param date1
* @param date2
* @return
*/
public static synchronized int getTwoDateDays(Date date1,Date date2){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date1);
//GregorianCalendar c1 = new GregorianCalendar(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH),calendar.get(Calendar.HOUR),calendar.get(Calendar.MINUTE),calendar.get(Calendar.SECOND));
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(date2);
//GregorianCalendar c2 = new GregorianCalendar(calendar1.get(Calendar.YEAR),calendar1.get(Calendar.MONTH),calendar1.get(Calendar.DAY_OF_MONTH),calendar1.get(Calendar.HOUR),calendar1.get(Calendar.MINUTE),calendar1.get(Calendar.SECOND));
//double timeLong=c2.getTimeInMillis()-c1.getTimeInMillis();
double timeLong = calendar1.getTimeInMillis()- calendar.getTimeInMillis();
//2013.12.09yang这里将两个日期比较的值四舍五入一下,不然两个值
String numStr = String.valueOf(new BigDecimal(String.valueOf(timeLong/1000/3600/24)).setScale(0, BigDecimal.ROUND_HALF_UP));
//System.out.println(numStr);
return new Integer(numStr).intValue();
}
/**
* 将两个scorm时间相加
* @param scormTime1 scorm时间,格式为00:00:00(1..2).0(1..3)
* @param scormTime2 scorm时间,格式为00:00:00(1..2).0(1..3)
* @return
*/
public static synchronized String addTwoScormTime(String scormTime1,String scormTime2){
int dotIndex1 = scormTime1.indexOf(“.”);
int hh1 = Integer.parseInt(scormTime1.substring(0,2));
int mm1 = Integer.parseInt(scormTime1.substring(3,5));
int ss1 = Integer.parseInt(scormTime1.substring(6,dotIndex1));
int ms1 = Integer.parseInt(scormTime1.substring(dotIndex1 + 1,scormTime1.length()));
int dotIndex2 = scormTime2.indexOf("."); int hh2 = Integer.parseInt(scormTime2.substring(0,2)); int mm2 = Integer.parseInt(scormTime2.substring(3,5)); int ss2 = Integer.parseInt(scormTime2.substring(6,dotIndex2)); int ms2 = Integer.parseInt(scormTime2.substring(dotIndex1 + 1,scormTime2.length())); int hh = 0; int mm = 0; int ss = 0; int ms = 0; if(ms1+ms2 >= 1000){ ss = 1; ms = ms1+ms2-1000; }else{ ms = ms1+ms2; } if(ss1+ss2+ss >= 60){ mm = 1; ss = ss1+ss2+ss-60; }else{ ss = ss1+ss2+ss; } if(mm1+mm2+mm>=60){ hh = 1; hh = mm1+mm2+mm-60; } hh = hh + hh1 + hh2; StringBuffer sb = new StringBuffer(); if(hh<10){ sb.append("0").append(hh); }else{ sb.append(hh); } sb.append(":"); if(mm<10){ sb.append("0").append(mm); }else{ sb.append(mm); } sb.append(":"); if(ss<10){ sb.append("0").append(ss); }else{ sb.append(ss); } sb.append("."); if(ms<10){ sb.append(ms).append("00"); }else if(ms<100){ sb.append(ms).append("0"); }else{ sb.append(ms); } return sb.toString(); } /** * 根据timeType返回当前日期与传入日期的差值(当前日期减传入日期) * 当要求返回月份的时候,date的日期必须和当前的日期相等, * 否则返回0(例如:2003-2-23 和 2004-6-12由于23号和12号不是同一天,固返回0, * 2003-2-23 和 2005-6-23 则需计算相差的月份,包括年,此例应返回28(个月)。 * 2003-2-23 和 2001-6-23 也需计算相差的月份,包括年,此例应返回-20(个月)) * * @param date 要与当前日期比较的日期 * @param timeType 0代表返回两个日期相差月数,1代表返回两个日期相差天数 * * @return 根据timeType返回当前日期与传入日期的差值 */ public static int CompareDateWithNow(Date date,int timeType){ Date now = Calendar.getInstance().getTime(); Calendar calendarNow=Calendar.getInstance(); calendarNow.setTime(now); calendarNow.set(Calendar.HOUR,0); calendarNow.set(Calendar.MINUTE,0); calendarNow.set(Calendar.SECOND,0); //System.out.println("calendarNow "+calendarNow.getTime()); Calendar calendarPara=Calendar.getInstance(); calendarPara.setTime(date); calendarPara.set(Calendar.HOUR,0); calendarPara.set(Calendar.MINUTE,0); calendarPara.set(Calendar.SECOND,0); //System.out.println("calendarPara "+calendarPara.getTime()); float nowTime=now.getTime(); float dateTime=date.getTime(); if(timeType==0){ if(calendarNow.get(Calendar.DAY_OF_YEAR)==calendarPara.get(Calendar.DAY_OF_YEAR)) return 0; return (calendarNow.get(Calendar.YEAR)-calendarPara.get(Calendar.YEAR))*12+calendarNow.get(Calendar.MONTH)-calendarPara.get(Calendar.MONTH); } else{ float result=nowTime-dateTime; float day=24*60*60*1000; //System.out.println("day "+day); result=(result>0)?result:-result; //System.out.println(result); result=result/day; Float resultFloat=new Float(result); float fraction=result-resultFloat.intValue(); if(fraction>0.5){ return resultFloat.intValue()+1; }else{ return resultFloat.intValue(); } } } public static boolean isSameDate(Date d1, Date d2){ if(d1==null || d2==null)return false; return d1.getYear()==d2.getYear() && d1.getMonth()==d2.getMonth() && d1.getDate()==d2.getDate(); } public static boolean lessOrEqual(Date d1, Date d2){ Calendar c1 = Calendar.getInstance(); c1.setTime(d1); Calendar c2 = Calendar.getInstance(); c2.setTime(d2); if( c1.before(c2)){ return true; }else{ return isSameDate(d1, d2); } } public static boolean less(Date d1, Date d2){ Calendar c1 = Calendar.getInstance(); c1.setTime(d1); Calendar c2 = Calendar.getInstance(); c2.setTime(d2); if( c1.before(c2)){ return true; }else{ return false; } } public static String addDate(String date, int cnt){ Calendar c = Calendar.getInstance(); c.setTime(DateUtil.toSimpleDate(date)); c.add(Calendar.DATE, cnt); return DateUtil.toOnlyDateFormat(c.getTime()); } public static String getYear(Date d){ return d==null?"":String.valueOf(1900+d.getYear()); } public static String getMonth(Date d){ return d==null?"":String.valueOf(d.getMonth()+1); } public static String getDate(Date d){ return d==null?"":String.valueOf(d.getDate()); } public static String getYear(String d){ return getYear(DateUtil.toSimpleDate(d)); } public static String getMonth(String d){ return getMonth(DateUtil.toSimpleDate(d)); } public static String getDate(String d){ return getDate(DateUtil.toSimpleDate(d)); } public static int getDayCountInMonth(Date d){ if(d==null)return 0; Calendar c = Calendar.getInstance(); c.setTime(d); return c.getActualMaximum(Calendar.DAY_OF_MONTH); } // 比较两个日期字符串的相差天数,如:2009-07-01与2009-07-10 或 2009/07/01与2009/07/10 public static int compareDateStr(String date1, String date2){ if(date1.indexOf("/")!=-1){ date1 = date1.replaceAll("/","-"); } if(date2.indexOf("/")!=-1){ date2 = date2.replaceAll("/","-"); } return getTwoDateDays(toSimpleDate(date2),toSimpleDate(date1)); } /** * 给定一个普通日期,返回当月最后一天 * @param monthdate * @return */ public static String getMonthLastDate(String monthdate){ String curmonth = monthdate.substring(5,7); String today = monthdate; while(true){ String nextday = DateUtil.addDate(today,1); if(!nextday.substring(5,7).equals(curmonth)){ return today; } today = nextday; } } /** * 获得下一个月 * @param yyyyMM * @return */ public static String getNextMonthStr(String yyyyMM){ int firsty = Integer.parseInt(yyyyMM.substring(0, 4)); int firstm = Integer.parseInt(yyyyMM.substring(4)); if(firstm==12){ firstm=1; firsty++; }else{ firstm++; } return String.valueOf(firsty) + Converter.padding(String.valueOf(firstm),2,'0',true); } public static String getWeekStr(Date date1){ String [] strs = {"周日","周一","周二","周三","周四","周五","周六"}; Calendar c1 = Calendar.getInstance(); c1.setTime(date1); int w = c1.get(Calendar.DAY_OF_WEEK); //System.out.println("www="+w); return a0f0 strs[w-1]; } /** * 获得一个月所需要的天数 */ public static String[] getDays(int year,int month){ String days[]=new String[42]; for(int i=0;i<42;i++) { days[i]=""; } Calendar thisMonth=Calendar.getInstance(); thisMonth.set(Calendar.MONTH,month-1); thisMonth.set(Calendar.YEAR,year); String years=String.valueOf(thisMonth.get(Calendar.YEAR)); String months=String.valueOf(thisMonth.get(Calendar.MONTH)); thisMonth.setFirstDayOfWeek(Calendar.SUNDAY); thisMonth.set(Calendar.DAY_OF_MONTH,1); int firstIndex=thisMonth.get(Calendar.DAY_OF_WEEK)-1; int maxIndex=thisMonth.getActualMaximum(Calendar.DAY_OF_MONTH); for(int i=0;i<maxIndex;i++) { days[firstIndex+i]=String.valueOf(i+1); } return days; } /** * 获取当前月份 */ public static String getMMDD(String YYYYMMDD){ String MM = YYYYMMDD.substring(5, 7); String DD = YYYYMMDD.substring(8); return MM+DD; }
}
相关文章推荐
- Java 获取指定日期的方法总结
- java获取日期相关小方法
- Java8特性总结(三)接口方法,注解,日期,Base64
- java日期格式化及获取相关总结
- -Java连接Excel、MySQL、SQLServer数据源及相关增、删、改、查方法和问题总结-【Part II】
- java处理日期相关的方法
- 3.5 java基础总结日期相关类①Date②Calender
- java相关的jar包中的实用方法总结
- Java和js获取当前日期方法总结
- Java 获取指定日期的方法总结
- 黑马程序员--Java基础加强--14.利用反射操作泛型III【解析关于泛型类型的细节信息的获取方法】【Method与泛型相关的方法】【个人总结】
- Java 获取指定日期的方法总结
- Java 获取指定日期的方法总结 -转
- JAVA基础 - 数组相关的方法总结
- Java 获取指定日期的方法总结
- Java 获取指定日期的实现方法总结
- Java 获取指定日期的方法总结
- Java 获取指定日期的方法总结
- -Java连接Excel、MySQL、SQLServer数据源及相关增、删、改、查方法和问题总结-【Part III】
- -Java连接Excel、MySQL、SQLServer数据源及相关增、删、改、查方法和问题总结-【Part I】