public class UtilForDate
{
/**
* 格式化日期
*
* @param dateStr 字符型日期
* @param format 格式
* @return 返回日期
*/
public static java.util.Date parseDate(String dateStr, String format)
{
java.util.Date date = null;
try
{
java.text.DateFormat df = new java.text.SimpleDateFormat(format);
date = (java.util.Date)df.parse(dateStr);
}
catch(java.text.ParseException e)
{
e.printStackTrace();
}
return date;
}
/**
* @param dateStr,默认格式为:yyyy/MM/dd
* @return Date
*/
public static java.util.Date parseDate(String dateStr)
{
return parseDate(dateStr, "yyyy/MM/dd");
}
/**
* 格式化输出日期
*
* @param date 日期
* @param format 格式
* @return 返回字符型日期
*/
public static String formatDate(java.util.Date date, String format)
{
String result = "";
try
{
if(date != null)
{
java.text.DateFormat df = new java.text.SimpleDateFormat(format);
result = df.format(date);
}
}
catch(Exception e)
{
e.printStackTrace();
}
return result;
}
/**
* 格式化日期,默认格式:yyyy/MM/dd
*
* @param date 日期
* @return 返回字符型日期
*/
public static String format(java.util.Date date)
{
return formatDate(date, "yyyy/MM/dd");
}
/**
* 返回年份
*
* @param date 日期
* @return 返回年份
*/
public static int getYear(java.util.Date date)
{
java.util.Calendar calendar = java.util.Calendar.getInstance();
calendar.setTime(date);
return calendar.get(java.util.Calendar.YEAR);
}
/**
* 返回月份
*
* @param date 日期
* @return 返回月份
*/
public static int getMonth(java.util.Date date)
{
java.util.Calendar calendar = java.util.Calendar.getInstance();
calendar.setTime(date);
return calendar.get(java.util.Calendar.MONTH) + 1;
}
/**
* 返回日份
*
* @param date 日期
* @return 返回日份
*/
public static int getDay(java.util.Date date)
{
java.util.Calendar calendar = java.util.Calendar.getInstance();
calendar.setTime(date);
return calendar.get(java.util.Calendar.DAY_OF_MONTH);
}
/**
* 返回小时
*
* @param date 日期
* @return 返回小时
*/
public static int getHour(java.util.Date date)
{
java.util.Calendar calendar = java.util.Calendar.getInstance();
calendar.setTime(date);
return calendar.get(java.util.Calendar.HOUR_OF_DAY);
}
/**
* 返回分钟
*
* @param date 日期
* @return 返回分钟
*/
public static int getMinute(java.util.Date date)
{
java.util.Calendar calendar = java.util.Calendar.getInstance();
calendar.setTime(date);
return calendar.get(java.util.Calendar.MINUTE);
}
/**
* 返回秒钟
*
* @param date 日期
* @return 返回秒钟
*/
public static int getSecond(java.util.Date date)
{
java.util.Calendar calendar = java.util.Calendar.getInstance();
calendar.setTime(date);
return calendar.get(java.util.Calendar.SECOND);
}
/**
* 返回毫秒
*
* @param date 日期
* @return 返回毫秒
*/
public static long getMillis(java.util.Date date)
{
java.util.Calendar calendar = java.util.Calendar.getInstance();
calendar.setTime(date);
return calendar.getTimeInMillis();
}
/**
* 返回字符型日期
*
* @param date 日期
* @return 返回字符型日期
*/
public static String getDate(java.util.Date date)
{
return formatDate(date, "yyyy/MM/dd");
}
/**
* 返回字符型时间,格式默认为:HH:mm:ss
*
* @param date 日期
* @return 返回字符型时间
*/
public static String getTime(java.util.Date date)
{
return formatDate(date, "HH:mm:ss");
}
/**
* 返回字符型日期时间,格式默认为:yyyy/MM/dd HH:mm:ss
*
* @param date 日期
* @return 返回字符型日期时间
*/
public static String getDateAndTime(java.util.Date date)
{
return formatDate(date, "yyyy/MM/dd HH:mm:ss");
}
/**
* 日期相加
*
* @param date 日期
* @param day 天数
* @return 返回相加后的日期
*/
public static java.util.Date addDate(java.util.Date date, int day)
{
java.util.Calendar calendar = java.util.Calendar.getInstance();
calendar.setTimeInMillis(getMillis(date) + ((long)day) * 24 * 3600 * 1000);
return calendar.getTime();
}
/**
* 日期相减,返回相隔天数
*
* @param date 日期
* @param date1 日期
* @return 返回相减后的天数
*/
public static int diffDate(java.util.Date date, java.util.Date date1)
{
return (int)((getMillis(date) - getMillis(date1)) / (24 * 3600 * 1000));
}
/**
* 取得指定月份的第一天
*
* @param strdate String
* @return String
*/
public static String getMonthBegin(String strdate)
{
java.util.Date date = parseDate(strdate);
return formatDate(date, "yyyy/MM") + "/01";
}
/**
* 取得指定月份的最后一天
*
* @param strdate String
* @return String
*/
public static String getMonthEnd(String strdate)
{
java.util.Date date = parseDate(getMonthBegin(strdate));
java.util.Calendar calendar = java.util.Calendar.getInstance();
calendar.setTime(date);
calendar.add(java.util.Calendar.MONTH, 1);
calendar.add(java.util.Calendar.DAY_OF_YEAR, -1);
return format(calendar.getTime());
}
/**
* 得到当前年份
* @return
*/
public static int getCurrYear()
{
return java.util.Calendar.getInstance().get(java.util.Calendar.YEAR);
}
/**
* 得到一年的总周数
*
* @param year
* @return
*/
public static int getWeekCountInYear(int year)
{
java.util.Calendar c = new java.util.GregorianCalendar();
c.set(year, java.util.Calendar.DECEMBER, 31, 23, 59, 59);
return getWeekOfYear(c.getTime());
}
/**
* 取得当前日期是多少周
*
* @param date
* @return
*/
public static int getWeekOfYear(java.util.Date date)
{
java.util.Calendar c = new java.util.GregorianCalendar();
c.setFirstDayOfWeek(java.util.Calendar.MONDAY);
c.setMinimalDaysInFirstWeek(7);
c.setTime(date);
return c.get(java.util.Calendar.WEEK_OF_YEAR);
}
/**
* 得到某年某周的第一天
*
* @param year
* @param week
* @return
*/
public static java.util.Date getFirstDayOfWeek(int year, int week)
{
java.util.Calendar c = new java.util.GregorianCalendar();
c.set(java.util.Calendar.YEAR, year);
c.set(java.util.Calendar.MONTH, java.util.Calendar.JANUARY);
c.set(java.util.Calendar.DATE, 1);
java.util.Calendar cal = (java.util.GregorianCalendar)c.clone();
cal.add(java.util.Calendar.DATE, week * 7);
return getFirstDayOfWeek(cal.getTime());
}
/**
* 得到某年某周的最后一天
*
* @param year
* @param week
* @return
*/
public static java.util.Date getLastDayOfWeek(int year, int week)
{
java.util.Calendar c = new java.util.GregorianCalendar();
c.set(java.util.Calendar.YEAR, year);
c.set(java.util.Calendar.MONTH, java.util.Calendar.JANUARY);
c.set(java.util.Calendar.DATE, 1);
java.util.Calendar cal = (java.util.GregorianCalendar)c.clone();
cal.add(java.util.Calendar.DATE, week * 7);
return getLastDayOfWeek(cal.getTime());
}
/**
* 得到某年某月的第一天
*
* @param year
* @param month
* @return
*/
public static java.util.Date getFirestDayOfMonth(int year, int month)
{
month = month - 1;
java.util.Calendar c = java.util.Calendar.getInstance();
c.set(java.util.Calendar.YEAR, year);
c.set(java.util.Calendar.MONTH, month);
int day = c.getActualMinimum(java.util.Calendar.DAY_OF_MONTH);
c.set(java.util.Calendar.DAY_OF_MONTH, day);
return c.getTime();
}
/**
* 提到某年某月的最后一天
*
* @param year
* @param month
* @return
*/
public static java.util.Date getLastDayOfMonth(int year, int month)
{
month = month - 1;
java.util.Calendar c = java.util.Calendar.getInstance();
c.set(java.util.Calendar.YEAR, year);
c.set(java.util.Calendar.MONTH, month);
int day = c.getActualMaximum(java.util.Calendar.DAY_OF_MONTH);
c.set(java.util.Calendar.DAY_OF_MONTH, day);
return c.getTime();
}
/**
* 取得当前日期所在周的第一天
*
* @param date
* @return 所在周的第一天的日期
*/
public static java.util.Date getFirstDayOfWeek(java.util.Date date)
{
java.util.Calendar c = new java.util.GregorianCalendar();
c.setFirstDayOfWeek(java.util.Calendar.MONDAY);
c.setTime(date);
c.set(java.util.Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday
return c.getTime();
}
/**
* 取得当前日期所在周的最后一天
*
* @param date
* @return 所在周最后一天的日期
*/
public static java.util.Date getLastDayOfWeek(java.util.Date date)
{
java.util.Calendar c = new java.util.GregorianCalendar();
c.setFirstDayOfWeek(java.util.Calendar.MONDAY);
c.setTime(date);
c.set(java.util.Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday
return c.getTime();
}
}