JAVA日期查询:季度、月份、星期等时间信息

java

package com.stt.dateChange;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

/**

*

* @author zengms

* @date 2012-12-27

*

*/

public class DateUtils {

private static final Log logger = LogFactory.getLog(DateUtils.class);

public static final String YYYYMMDD = "yyyy-MM-dd";

public static final String YYYYMMDD_ZH = "yyyy年MM月dd日";

public static final int FIRST_DAY_OF_WEEK = Calendar.MONDAY; // 中国周一是一周的第一天

/**

*

* @param strDate

* @return

*/

public static Date parseDate(String strDate) {

return parseDate(strDate, null);

}

/**

* parseDate

*

* @param strDate

* @param pattern

* @return

*/

public static Date parseDate(String strDate, String pattern) {

Date date = null;

try {

if (pattern == null) {

pattern = YYYYMMDD;

}

SimpleDateFormat format = new SimpleDateFormat(pattern);

date = format.parse(strDate);

} catch (Exception e) {

logger.error("parseDate error:" + e);

}

return date;

}

/**

* format date

*

* @param date

* @return

*/

public static String formatDate(Date date) {

return formatDate(date, null);

}

/**

* format date

*

* @param date

* @param pattern

* @return

*/

public static String formatDate(Date date, String pattern) {

String strDate = null;

try {

if (pattern == null) {

pattern = YYYYMMDD;

}

SimpleDateFormat format = new SimpleDateFormat(pattern);

strDate = format.format(date);

} catch (Exception e) {

logger.error("formatDate error:", e);

}

return strDate;

}

/**

* 取得日期:年

*

* @param date

* @return

*/

public static int getYear(Date date) {

Calendar c = Calendar.getInstance();

c.setTime(date);

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

return year;

}

/**

* 取得日期:年

*

* @param date

* @return

*/

public static int getMonth(Date date) {

Calendar c = Calendar.getInstance();

c.setTime(date);

int month = c.get(Calendar.MONTH);

return month + 1;

}

/**

* 取得日期:年

*

* @param date

* @return

*/

public static int getDay(Date date) {

Calendar c = Calendar.getInstance();

c.setTime(date);

int da = c.get(Calendar.DAY_OF_MONTH);

return da;

}

/**

* 取得当天日期是周几

*

* @param date

* @return

*/

public static int getWeekDay(Date date) {

Calendar c = Calendar.getInstance();

c.setTime(date);

int week_of_year = c.get(Calendar.DAY_OF_WEEK);

return week_of_year - 1;

}

/**

* 取得一年的第几周

*

* @param date

* @return

*/

public static int getWeekOfYear(Date date) {

Calendar c = Calendar.getInstance();

c.setTime(date);

int week_of_year = c.get(Calendar.WEEK_OF_YEAR);

return week_of_year;

}

/**

* getWeekBeginAndEndDate

*

* @param date

* @param pattern

* @return

*/

public static String getWeekBeginAndEndDate(Date date, String pattern) {

Date monday = getMondayOfWeek(date);

Date sunday = getSundayOfWeek(date);

return formatDate(monday, pattern) + " - "

+ formatDate(sunday, pattern);

}

/**

* 根据日期取得对应周周一日期

*

* @param date

* @return

*/

public static Date getMondayOfWeek(Date date) {

Calendar monday = Calendar.getInstance();

monday.setTime(date);

monday.setFirstDayOfWeek(FIRST_DAY_OF_WEEK);

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

return monday.getTime();

}

/**

* 根据日期取得对应周周日日期

*

* @param date

* @return

*/

public static Date getSundayOfWeek(Date date) {

Calendar sunday = Calendar.getInstance();

sunday.setTime(date);

sunday.setFirstDayOfWeek(FIRST_DAY_OF_WEEK);

sunday.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);

return sunday.getTime();

}

/**

* 取得月的剩余天数

*

* @param date

* @return

*/

public static int getRemainDayOfMonth(Date date) {

int dayOfMonth = getDayOfMonth(date);

int day = getPassDayOfMonth(date);

return dayOfMonth - day;

}

/**

* 取得月已经过的天数

*

* @param date

* @return

*/

public static int getPassDayOfMonth(Date date) {

Calendar c = Calendar.getInstance();

c.setTime(date);

return c.get(Calendar.DAY_OF_MONTH);

}

/**

* 取得月天数

*

* @param date

* @return

*/

public static int getDayOfMonth(Date date) {

Calendar c = Calendar.getInstance();

c.setTime(date);

return c.getActualMaximum(Calendar.DAY_OF_MONTH);

}

/**

* 取得月第一天

*

* @param date

* @return

*/

public static Date getFirstDateOfMonth(Date date) {

Calendar c = Calendar.getInstance();

c.setTime(date);

c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH));

return c.getTime();

}

/**

* 取得月最后一天

*

* @param date

* @return

*/

public static Date getLastDateOfMonth(Date date) {

Calendar c = Calendar.getInstance();

c.setTime(date);

c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));

return c.getTime();

}

/**

* 取得季度第一天

*

* @param date

* @return

*/

public static Date getFirstDateOfSeason(Date date) {

return getFirstDateOfMonth(getSeasonDate(date)[0]);

}

/**

* 取得季度最后一天

*

* @param date

* @return

*/

public static Date getLastDateOfSeason(Date date) {

return getLastDateOfMonth(getSeasonDate(date)[2]);

}

/**

* 取得季度天数

*

* @param date

* @return

*/

public static int getDayOfSeason(Date date) {

int day = 0;

Date[] seasonDates = getSeasonDate(date);

for (Date date2 : seasonDates) {

day += getDayOfMonth(date2);

}

return day;

}

/**

* 取得季度剩余天数

*

* @param date

* @return

*/

public static int getRemainDayOfSeason(Date date) {

return getDayOfSeason(date) - getPassDayOfSeason(date);

}

/**

* 取得季度已过天数

*

* @param date

* @return

*/

public static int getPassDayOfSeason(Date date) {

int day = 0;

Date[] seasonDates = getSeasonDate(date);

Calendar c = Calendar.getInstance();

c.setTime(date);

int month = c.get(Calendar.MONTH);

if (month == Calendar.JANUARY || month == Calendar.APRIL

|| month == Calendar.JULY || month == Calendar.OCTOBER) {// 季度第一个月

day = getPassDayOfMonth(seasonDates[0]);

} else if (month == Calendar.FEBRUARY || month == Calendar.MAY

|| month == Calendar.AUGUST || month == Calendar.NOVEMBER) {// 季度第二个月

day = getDayOfMonth(seasonDates[0])

+ getPassDayOfMonth(seasonDates[1]);

} else if (month == Calendar.MARCH || month == Calendar.JUNE

|| month == Calendar.SEPTEMBER || month == Calendar.DECEMBER) {// 季度第三个月

day = getDayOfMonth(seasonDates[0]) + getDayOfMonth(seasonDates[1])

+ getPassDayOfMonth(seasonDates[2]);

}

return day;

}

/**

* 取得季度月

*

* @param date

* @return

*/

public static Date[] getSeasonDate(Date date) {

Date[] season = new Date[3];

Calendar c = Calendar.getInstance();

c.setTime(date);

int nSeason = getSeason(date);

if (nSeason == 1) {// 第一季度

c.set(Calendar.MONTH, Calendar.JANUARY);

season[0] = c.getTime();

c.set(Calendar.MONTH, Calendar.FEBRUARY);

season[1] = c.getTime();

c.set(Calendar.MONTH, Calendar.MARCH);

season[2] = c.getTime();

} else if (nSeason == 2) {// 第二季度

c.set(Calendar.MONTH, Calendar.APRIL);

season[0] = c.getTime();

c.set(Calendar.MONTH, Calendar.MAY);

season[1] = c.getTime();

c.set(Calendar.MONTH, Calendar.JUNE);

season[2] = c.getTime();

} else if (nSeason == 3) {// 第三季度

c.set(Calendar.MONTH, Calendar.JULY);

season[0] = c.getTime();

c.set(Calendar.MONTH, Calendar.AUGUST);

season[1] = c.getTime();

c.set(Calendar.MONTH, Calendar.SEPTEMBER);

season[2] = c.getTime();

} else if (nSeason == 4) {// 第四季度

c.set(Calendar.MONTH, Calendar.OCTOBER);

season[0] = c.getTime();

c.set(Calendar.MONTH, Calendar.NOVEMBER);

season[1] = c.getTime();

c.set(Calendar.MONTH, Calendar.DECEMBER);

season[2] = c.getTime();

}

return season;

}

/**

*

* 1 第一季度 2 第二季度 3 第三季度 4 第四季度

*

* @param date

* @return

*/

public static int getSeason(Date date) {

int season = 0;

Calendar c = Calendar.getInstance();

c.setTime(date);

int month = c.get(Calendar.MONTH);

switch (month) {

case Calendar.JANUARY:

case Calendar.FEBRUARY:

case Calendar.MARCH:

season = 1;

break;

case Calendar.APRIL:

case Calendar.MAY:

case Calendar.JUNE:

season = 2;

break;

case Calendar.JULY:

case Calendar.AUGUST:

case Calendar.SEPTEMBER:

season = 3;

break;

case Calendar.OCTOBER:

case Calendar.NOVEMBER:

case Calendar.DECEMBER:

season = 4;

break;

default:

break;

}

return season;

}

public static void main(String[] args) {

String strDate = "2013-01-01";

Date date = parseDate(strDate);

System.out.println(strDate + " 今天是哪一年?" + getYear(date));

System.out.println(strDate + " 今天是哪个月?" + getMonth(date));

System.out.println(strDate + " 今天是几号?" + getDay(date));

System.out.println(strDate + " 今天是周几?" + getWeekDay(date));

System.out.println(strDate + " 是一年的第几周?" + getWeekOfYear(date));

System.out.println(strDate + " 所在周起始结束日期?"

+ getWeekBeginAndEndDate(date, "yyyy年MM月dd日"));

System.out.println(strDate + " 所在周周一是?"

+ formatDate(getMondayOfWeek(date)));

System.out.println(strDate + " 所在周周日是?"

+ formatDate(getSundayOfWeek(date)));

System.out.println(strDate + " 当月第一天日期?"

+ formatDate(getFirstDateOfMonth(date)));

System.out.println(strDate + " 当月最后一天日期?"

+ formatDate(getLastDateOfMonth(date)));

System.out.println(strDate + " 当月天数?" + getDayOfMonth(date));

System.out.println(strDate + " 当月已过多少天?" + getPassDayOfMonth(date));

System.out.println(strDate + " 当月剩余多少天?" + getRemainDayOfMonth(date));

System.out.println(strDate + " 所在季度第一天日期?"

+ formatDate(getFirstDateOfSeason(date)));

System.out.println(strDate + " 所在季度最后一天日期?"

+ formatDate(getLastDateOfSeason(date)));

System.out.println(strDate + " 所在季度天数?" + getDayOfSeason(date));

System.out.println(strDate + " 所在季度已过多少天?" + getPassDayOfSeason(date));

System.out

.println(strDate + " 所在季度剩余多少天?" + getRemainDayOfSeason(date));

System.out.println(strDate + " 是第几季度?" + getSeason(date));

System.out.println(strDate + " 所在季度月份?"

+ formatDate(getSeasonDate(date)[0], "yyyy年MM月") + "/"

+ formatDate(getSeasonDate(date)[1], "yyyy年MM月") + "/"

+ formatDate(getSeasonDate(date)[2], "yyyy年MM月"));

}

}

以上是 JAVA日期查询:季度、月份、星期等时间信息 的全部内容, 来源链接: utcz.com/z/390298.html

回到顶部