/**
* 获取当前的年分
*
* @return
*/
public static int getSeasonId() {
Calendar cal = Calendar.getInstance();
return cal.get(Calendar.YEAR);
}
/**
* 获得本周一与当前日期相差的天数
*
* @return
*/
public static int getMondayPlus() {
Calendar cd = Calendar.getInstance();
int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek == 1) {
return -6;
} else {
return 2 - dayOfWeek;
}
}
/**
* 获取当前周每天的开始时间
* @param
* @return
*/
public static List<String> appendBeginDate() {
List<String> beginDateStrs = new ArrayList<>();
for (String str : getWeekdays()) {
String str1 = str + " " + "00:00:01";
beginDateStrs.add(str1);
}
return beginDateStrs;
}
/**
* 获得当前周 周日 的日期
*
* @return
*/
public static String getPreviousSunday() {
return appendEndDate().get(6);
}
/**
* 获得当前周 周一的日期
*
* @return
*/
public static String getCurrentMonday() {
return appendBeginDate().get(0);
}
/**
* 获取当前周每天的开始时间
*
* @param
* @return
*/
public static List<String> appendBeginDate() {
List<String> beginDateStrs = new ArrayList<>();
for (String str : getWeekdays()) {
String str1 = str + " " + "00:00:01";
beginDateStrs.add(str1);
}
return beginDateStrs;
}
/**
* 获取当前周每天的结束时间
*
* @return
*/
public static List<String> appendEndDate() {
List<String> endDateStrs = new ArrayList<>();
for (String str : getWeekdays()) {
String str1 = str + " " + "23:59:59";
endDateStrs.add(str1);
}
return endDateStrs;
}
/**
* 获取某个时间加上几分钟后的时间
*
* @param date 时间
* @param minutes 分钟
* @return
*/
public static Date getDateAddMinute(Date date, int minutes) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MINUTE, minutes);
return calendar.getTime();
}
/**
* 获取某个时间的n天后的时间
*
* @param dateNum n天
* @return
*/
public static Date getDaysAfterDate(Date date, int dateNum) {
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(date);
calendar2.add(Calendar.DATE, 3);
return calendar2.getTime();
}
/**
* 获取某个时间的n天前的时间
*
* @return
*/
public static Date getPastDate(int past) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - past);
return calendar.getTime();
}
/**
* 获取两个时间之间相差多少秒
*
* @param startDate 开始时间
* @param startDate 结束时间
* @return
*/
public static int calLastedTime(Date startDate, Date endDate) {
long a = endDate.getTime();
long b = startDate.getTime();
int c = (int) ((a - b) / 1000);
return c;
}
/**
* 判断两个时间相差的天数
*/
public static int differentDays(Date date1, Date date2) {
Calendar cal1 = Calendar.getInstance();
cal1.setTime(date1);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(date2);
int day1 = cal1.get(Calendar.DAY_OF_YEAR);
int day2 = cal2.get(Calendar.DAY_OF_YEAR);
int year1 = cal1.get(Calendar.YEAR);
int year2 = cal2.get(Calendar.YEAR);
if (year1 != year2) //同一年
{
int timeDistance = 0;
for (int i = year1; i < year2; i++) {
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) //闰年
{
timeDistance += 366;
} else //不是闰年
{
timeDistance += 365;
}
}
return timeDistance + (day2 - day1);
} else //不同年
{
return day2 - day1;
}
}
/**
* 判断两个时间是否在同一天
*
* @param date1 时间1
* @param date2 时间2
* @return
*/
public static boolean isSameDate(Date date1, Date date2) {
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(date1);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(date2);
if (calendar1.get(Calendar.YEAR) != calendar2.get(Calendar.YEAR)) {
return false;
}
if (calendar1.get(Calendar.MONTH) != calendar2.get(Calendar.MONTH)) {
return false;
}
if (calendar1.get(Calendar.DAY_OF_MONTH) != calendar2.get(Calendar.DAY_OF_MONTH)) {
return false;
}
return true;
}
/**
* 根据生日判断当前年龄
*/
public static int getAge(Date birthDay) {
Calendar cal = Calendar.getInstance();
if (cal.before(birthDay)) {
throw new IllegalArgumentException(
"The birthDay is before Now.It's unbelievable!");
}
int yearNow = cal.get(Calendar.YEAR);
int monthNow = cal.get(Calendar.MONTH);
int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);
cal.setTime(birthDay);
int yearBirth = cal.get(Calendar.YEAR);
int monthBirth = cal.get(Calendar.MONTH);
int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
int age = yearNow - yearBirth;
if (monthNow <= monthBirth) {
if (monthNow == monthBirth) {
if (dayOfMonthNow < dayOfMonthBirth) age--;
}else{
age--;
}
}
return age;
}
/**
* 判断距离下一个生日还有几天
*/
public static int differentBirthDays(Date nowData, Date birthDay) {
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
Calendar cToday = Calendar.getInstance(); // 存今天
Calendar cBirth = Calendar.getInstance(); // 存生日
cBirth.setTime(birthDay); // 设置生日
cBirth.set(Calendar.YEAR, cToday.get(Calendar.YEAR)); // 修改为本年
int days;
if (cBirth.get(Calendar.DAY_OF_YEAR) < cToday.get(Calendar.DAY_OF_YEAR)) {
// 生日已经过了,要算明年的了
days = cToday.getActualMaximum(Calendar.DAY_OF_YEAR) - cToday.get(Calendar.DAY_OF_YEAR);
days += cBirth.get(Calendar.DAY_OF_YEAR);
} else {
// 生日还没过
days = cBirth.get(Calendar.DAY_OF_YEAR) - cToday.get(Calendar.DAY_OF_YEAR);
}
// 输出结果
return days;
}