开始
package com.xjxcc.util;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;
public class DateUtils {
public static final String FORMAT_YYYYMMDD_HHMMSS_EN = "yyyy-MM-dd HH:mm:ss";
public static final String FORMAT_YYYYMMDD_EN = "yyyy-MM-dd";
public static final String FORMAT_HHMMSS_EN = "HH:mm:ss";
public static final String FORMAT_YYYYMMDD_HHMMSS_CN = "yyyy年MM月dd日 HH时mm分ss秒";
public static final String FORMAT_YYYYMMDD_CN = "yyyy年MM月dd日";
public static final String FORMAT_HHMMSS_CN = "HH时mm分ss秒";
public static final Map<String, Integer> WEEK_NUM_MAP = new HashMap<String, Integer>(){
private static final long serialVersionUID = -5497456354895965657L;
{
put("monday", 1);
put("tuesday", 2);
put("wednesday", 3);
put("thursday", 4);
put("friday", 5);
put("saturday", 6);
put("sunday", 7);
}
};
public static final Map<String, String> WEEK_CN_MAP = new HashMap<String, String>(){
private static final long serialVersionUID = 7082498901453059141L;
{
put("monday", "一");
put("tuesday", "二");
put("wednesday", "三");
put("thursday", "四");
put("friday", "五");
put("saturday", "六");
put("sunday", "日");
}
};
/**
* 取得指定天数后的时间
* @param date 时间
* @param dayAmount 指定天数(允许为负数)
* @return
*/
public static Date addDay(Date date, int dayAmount) {
if (date == null) {
return null;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, dayAmount);
return calendar.getTime();
}
/**
* 取得指定小时数后的时间
* @param date 时间
* @param hourAmount 指定小时数(允许为负数)
* @return
*/
public static Date addHour(Date date, int hourAmount) {
if (date == null) {
return null;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR, hourAmount);
return calendar.getTime();
}
/**
* 取得指定分钟数后的时间
* @param date 时间
* @param minuteAmount 指定分钟数(可以为负数)
* @return
*/
public static Date addMinute(Date date, int minuteAmount) {
if (date == null) {
return null;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MINUTE, minuteAmount);
return calendar.getTime();
}
/**
* 获取周几的中文、如果传入monday、则返回:一
* @param enWeekName
* @return
*/
public static String getWeekCN(String enWeekName) {
return WEEK_CN_MAP.get(enWeekName);
}
/**
* 获取周几的数字、如果传入monday、则返回:1
* @param enWeekName
* @return
*/
public static int getWeekAmount(String enWeekName) {
return WEEK_NUM_MAP.get(enWeekName);
}
/**
* 根据指定的年、月、日获取时间
* @param year 年
* @param month 月
* @param day 日
* @return
*/
public static Date getDate(int year, int month, int day) {
return getDate(year, month, day, 0, 0);
}
/**
* 根据指定的年、月、日、小时、分获取时间
* @param year 年
* @param month 月
* @param day 日
* @param hourOfDay 小时
* @param minute 分
* @return
*/
public static Date getDate(int year, int month, int day, int hourOfDay,
int minute) {
return getDate(year, month, day, hourOfDay, minute, 0);
}
/**
* 根据指定的年、月、日、小时、分、秒获取时间
* @param year 年
* @param month 月
* @param day 日
* @param hourOfDay 小时
* @param minute 分
* @param second 秒
* @return
*/
public static Date getDate(int year, int month, int day, int hourOfDay,
int minute, int second) {
Calendar cal = Calendar.getInstance();
cal.set(year, month - 1, day, hourOfDay, minute, second);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
/**
* 获取某个时间是周几
* @param date
* @return
*/
public static int getDayOfWeek(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.DAY_OF_WEEK);
}
/**
* 得到指定日期的下一天
* @param date 时间
*/
public static Date getDateNextDay(Date date) {
return addDay(date, 1);
}
/**
* 获取某个时间的开始 如:2018-07-20 00:00:00:0
* @param date 时间
* @return
*/
public static Date getDateByStart(Date date) {
if (date == null) {
return null;
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
/**
* 获取某个时间的结束 如:2018-07-20 23:59:59.999
* @param date 时间
* @return
*/
public static Date getDateByEnd(Date date) {
if (date == null) {
return null;
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
return cal.getTime();
}
/**
* 根据时间获取指定格式的字符串时间
* @param date 时间
* @param fotmat 指定格式
* @return
*/
public static String getDateStrByFormat(Date date, String fotmat) {
if (fotmat == null) {
return null;
}
SimpleDateFormat format = new SimpleDateFormat(fotmat);
return format.format(date);
}
/**
* 判断某一年是否为闰年
* @param year 某一年
* @return
*/
public static boolean isLeapYear(int year) {
Calendar calendar = Calendar.getInstance();
return ((GregorianCalendar) calendar).isLeapYear(year);
}
/**
* 获取某个时间是这一年中的第几周
* @param date 某个时间
* @return
*/
public static int getWeekCountOfYear(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.WEEK_OF_YEAR);
}
/**
* 获取上周的周几
* @param dayOfWeek 周几
* @return
*/
public static Date getDateOfPreviousWeek(int dayOfWeek) {
if (dayOfWeek > 7 || dayOfWeek < 1) {
throw new IllegalArgumentException("参数必须是1-7之间的数字");
}
return getDateOfRange(dayOfWeek, -1);
}
/**
* 获取本周的周几
* @param dayOfWeek 周几
* @return
*/
public static Date getDateOfCurrentWeek(int dayOfWeek) {
if (dayOfWeek > 7 || dayOfWeek < 1) {
throw new IllegalArgumentException("参数必须是1-7之间的数字");
}
return getDateOfRange(dayOfWeek, 0);
}
/**
* 获取下一周的周几
* @param dayOfWeek 周几
* @return
*/
public static Date getDateOfNextWeek(int dayOfWeek) {
if (dayOfWeek > 7 || dayOfWeek < 1) {
throw new IllegalArgumentException("参数必须是1-7之间的数字");
}
return getDateOfRange(dayOfWeek, 1);
}
/**
* 获取某周的周几的时间
* @param dayOfWeek 周几
* @param dayOfRange 某周(本周就是1、上周就是-1、下周就是1、下下周就是2、以此类推)
* @return
*/
private static Date getDateOfRange(int dayOfWeek, int week) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_WEEK, dayOfWeek + 1);
cal.set(Calendar.DATE, cal.get(Calendar.DATE) + week * 7);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
/**
* 获取某年某月的最后一天
* @param year 某年
* @param month 某月
* @return
*/
public static Date getLastDayOfMY(int month, int year) {
Calendar cal = Calendar.getInstance();
//设置年份
cal.set(Calendar.YEAR,year);
//设置月份
cal.set(Calendar.MONTH, month-1);
//获取某月最大天数
int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
//设置日历中月份的最大天数
cal.set(Calendar.DAY_OF_MONTH, lastDay);
return cal.getTime();
}
/**
* 获取某年某月的最后一天
* @param year 某年
* @param month 某月
* @return
*/
public static int getLastDayCountOfMY(int year, int month) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(getLastDayOfMY(month, year));
return calendar.get(Calendar.DAY_OF_MONTH);
}
/**
* 获取某年某月的第一天
* @param year 某年
* @param month 某月
* @return
*/
public static Date getFirstDayOfMY(int month, int year) {
Calendar cal = Calendar.getInstance();
//设置年份
cal.set(Calendar.YEAR,year);
//设置月份
cal.set(Calendar.MONTH, month-1);
//获取某月最大天数
int lastDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
//设置日历中月份的最大天数
cal.set(Calendar.DAY_OF_MONTH, lastDay);
return cal.getTime();
}
/**
* 获取当前这个月的最后一天
* @return
*/
public static Date getLastDayOfCurrentM() {
Calendar cal = Calendar.getInstance();
//获取某月最大天数
int lastDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
//设置日历中月份的最大天数
cal.set(Calendar.DAY_OF_MONTH, lastDay);
return cal.getTime();
}
/**
* 获取当前这个月的第一天
* @return
*/
public static Date getFirstDayOfCurrentM() {
Calendar cal = Calendar.getInstance();
//获取某月最大天数
int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
//设置日历中月份的最大天数
cal.set(Calendar.DAY_OF_MONTH, lastDay);
return cal.getTime();
}
}
结束