Java日期时间操作函数代码(四)

2014-11-24 02:04:06 · 作者: · 浏览: 9
00整除则是闰年

* 3.能被4整除同时能被100整除则不是闰年

*/

Date d = strToDate(ddate);

GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();

gc.setTime(d);

int year = gc.get(Calendar.YEAR);

if ((year % 400) == 0)

return true;

else if ((year % 4) == 0) {

if ((year % 100) == 0)

return false;

else

return true;

} else

return false;

}

/**

* 返回美国时间格式26 Apr 2006

*

* @param str

* @return

*/

public static String getEDate(String str) {

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");

ParsePosition pos = new ParsePosition(0);

Date strtodate = formatter.parse(str, pos);

String j = strtodate.toString();

String[] k = j.split(" ");

return k[2] + k[1].toUpperCase() + k[5].substring(2, 4);

}

/**

* 获取一个月的最后一天

*

* @param dat

* @return

*/

public static String getEndDateOfMonth(String dat) {// yyyy-MM-dd

String str = dat.substring(0, 8);

String month = dat.substring(5, 7);

int mon = Integer.parseInt(month);

if (mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8 || mon == 10 || mon == 12) {

str += "31";

} else if (mon == 4 || mon == 6 || mon == 9 || mon == 11) {

str += "30";

} else {

if (isLeapYear(dat)) {

str += "29";

} else {

str += "28";

}

}

return str;

}

/**

* 判断二个时间是否在同一个周

*

* @param date1

* @param date2

* @return

*/

public static boolean isSameWeekDates(Date date1, Date date2) {

Calendar cal1 = Calendar.getInstance();

Calendar cal2 = Calendar.getInstance();

cal1.setTime(date1);

cal2.setTime(date2);

int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);

if (0 == subYear) {

if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))

return true;

} else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) {

// 如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周

if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))

return true;

} else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) {

if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))

return true;

}

return false;

}

/**

* 产生周序列,即得到当前时间所在的年度是第几周

*

* @return

*/

public static String getSeqWeek() {

Calendar c = Calendar.getInstance(Locale.CHINA);

String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR));

if (week.length() == 1)

week = "0" + week;

String year = Integer.toString(c.get(Calendar.YEAR));

return year + week;

}

/**

* 获得一个日期所在的周的星期几的日期,如要找出2002年2月3日所在周的星期一是几号

*

* @param sdate

* @param num

* @return

*/

public static String getWeek(String sdate, String num) {

// 再转换为时间

Date dd = VeDate.strToDate(sdate);

Calendar c = Calendar.getInstance();

c.setTime(dd);

if (num.equals("1")) // 返回星期一所在的日期

c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

else if (num.equals("2")) // 返回星期二所在的日期

c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);

else if (num.equals("3")) // 返回星期三所在的日期

c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);

else if (num.equals("4")) // 返回星期四所在的日期

c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);

else if (num.equals("5")) // 返回星期五所在的日期

c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);

else if (num.equals("6")) // 返回星期六所在的日期

c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);

else if (num.equals("0")) // 返回星期