今天给大家分享一个非常好用的日期工具类
- 你是否还在每天都在用SimpleDateFormat将日期和字符串来回的转换等等。。。
- 你是否还在用Calendar.getInstance()来获取当月第一天日期等等。。。
- 你是否还在为获取两个日期之间的小时数、天数而苦苦发愁。
- 你是否还在懊恼如何获得当前时间的年份、月份。
- 你是否还在纠结怎么来算出当前日期的前后多少天、月、年的日期。
有了这个日期工具类你将不再懊恼,快快用起来
package com.iot.system.util;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.FastDateFormat;
import java.lang.management.ManagementFactory;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class MyDateUtils extends org.apache.commons.lang3.time.DateUtils {
private static String[] parsePatterns = {
"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM-dd HH", "yyyy-MM",
"yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM/dd HH", "yyyy/MM",
"yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM.dd HH", "yyyy.MM",
"yyyy年MM月dd日", "yyyy年MM月dd日 HH时mm分ss秒", "yyyy年MM月dd日 HH时mm分", "yyyy年MM月dd日 HH时", "yyyy年MM月",
"yyyy","yyyyMM"};
public static String formatDate(Date date) {
return formatDate(date, "yyyy-MM-dd");
}
public static String formatDate_(Date date) {
return formatDate(date, "yy.MM.dd");
}
public static String formatDate(long dateTime, String pattern) {
return formatDate(new Date(dateTime), pattern);
}
public static String formatDate(Date date, String pattern) {
String formatDate = null;
if (date != null){
if (StringUtils.isBlank(pattern)) {
pattern = "yyyy-MM-dd";
}
formatDate = FastDateFormat.getInstance(pattern).format(date);
}
return formatDate;
}
public static String formatDateTime(Date date) {
return formatDate(date, "yyyy-MM-dd HH:mm:ss");
}
public static String formatDateTimeByMonth(Date date) {
return formatDate(date, "M");
}
public static String formatDateTimeByDay(Date date) {
return formatDate(date, "d");
}
public static String formatDateTimeByHour(Date date) {
return formatDate(date, "H");
}
public static String formatDateTimeByMin(Date date) {
return formatDate(date, "m");
}
public static String getDate() {
return getDate("yyyy-MM-dd");
}
public static String getDate(String pattern) {
return FastDateFormat.getInstance(pattern).format(new Date());
}
public static String getDate(String pattern, int amont, int type) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(type, amont);
return FastDateFormat.getInstance(pattern).format(calendar.getTime());
}
public static String getDate(Date date,String pattern, int amont, int type) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(type, amont);
return FastDateFormat.getInstance(pattern).format(calendar.getTime());
}
public static String getTime() {
return formatDate(new Date(), "HH:mm:ss");
}
public static String getTime(Date date) {
return formatDate(date, "HH:mm:ss");
}
public static String getDateTime() {
return formatDate(new Date(), "yyyy-MM-dd HH:mm:ss");
}
public static String getYear() {
return formatDate(new Date(), "yyyy");
}
public static String getMonth() {
return formatDate(new Date(), "MM");
}
public static String getDay() {
return formatDate(new Date(), "dd");
}
public static String getHours() {
return formatDate(new Date(), "HH");
}
public static String getMinute() {
return formatDate(new Date(), "mm");
}
public static String getWeek() {
return formatDate(new Date(), "E");
}
public static Date parseDate(Object str) {
if (str == null){
return null;
}
try {
return parseDate(str.toString(), parsePatterns);
} catch (ParseException e) {
return null;
}
}
public static Date parseDateNew(Object str) {
if (str == null){
return null;
}
try {
return parseDate(str.toString(), "yyyyMM");
} catch (ParseException e) {
return null;
}
}
public static Date parseNullDate(Object str) {
if (str == null || ("").equals(str)){
return null;
}
try {
return parseDate(str.toString(), parsePatterns);
} catch (ParseException e) {
return null;
}
}
public static long pastDays(Date date) {
long t = System.currentTimeMillis()-date.getTime();
return t/(24*60*60*1000);
}
public static long pastHour(Date date) {
long t = System.currentTimeMillis()-date.getTime();
return t/(60*60*1000);
}
public static long pastMinutes(Date date) {
long t = System.currentTimeMillis()-date.getTime();
return t/(60*1000);
}
public static int getBetweenDay(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);
int timeDistance = 0;
if (year1 != year2) {
int smallYear = year1;
int bigYear = year2;
if (smallYear > bigYear) {
int temp = smallYear;
smallYear = bigYear;
bigYear = temp;
}
for (int i = smallYear; i < bigYear; i++) {
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
timeDistance += 366;
} else {
timeDistance += 365;
}
}
if (year1 > year2) {
timeDistance = -timeDistance;
}
}
return timeDistance + (day2 - day1);
}
public static double getDistanceOfTwoDate(Date before, Date after) {
long beforeTime = before.getTime();
long afterTime = after.getTime();
return (afterTime - beforeTime) / (1000 * 60 * 60 * 24);
}
public static double getHourOfTwoDate(Date before, Date after) {
long beforeTime = before.getTime();
long afterTime = after.getTime();
return (afterTime - beforeTime) / (1000 * 60 * 60);
}
public static List<Date> getAllTheDateOftheMonth(Date date) {
List<Date> list = new ArrayList<Date>();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.DATE, 1);
int month = cal.get(Calendar.MONTH);
while(cal.get(Calendar.MONTH) == month){
list.add(cal.getTime());
cal.add(Calendar.DATE, 1);
}
return list;
}
public static double getMinutesOfTwoDate(Date before, Date after) {
long beforeTime = before.getTime();
long afterTime = after.getTime();
return (afterTime - beforeTime) / (1000 * 60);
}
public static int getMonthHasDays(Date date){
String yyyyMM = FastDateFormat.getInstance("yyyyMM").format(date);
String year = yyyyMM.substring(0, 4);
String month = yyyyMM.substring(4, 6);
String day31 = ",01,03,05,07,08,10,12,";
String day30 = "04,06,09,11";
int day = 0;
if (day31.contains(month)) {
day = 31;
} else if (day30.contains(month)) {
day = 30;
} else {
int y = Integer.parseInt(year);
if ((y % 4 == 0 && (y % 100 != 0)) || y % 400 == 0) {
day = 29;
} else {
day = 28;
}
}
return day;
}
public static int getWeekOfYear(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.WEEK_OF_YEAR);
}
public static Date getOfDayFirst(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime ();
}
public static Date getOfDayLast(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
return calendar.getTime ();
}
public static Date getDayLast(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
return calendar.getTime ();
}
public static Date getServerStartDate(){
long time = ManagementFactory.getRuntimeMXBean().getStartTime();
return new Date(time);
}
public static String formatDateBetweenString(Date beginDate, Date endDate){
String begin = MyDateUtils.formatDate(beginDate);
String end = MyDateUtils.formatDate(endDate);
if (StringUtils.isNoneBlank(begin, end)){
return begin + " ~ " + end;
}
return null;
}
public static Date[] parseDateBetweenString(String dateString){
Date beginDate = null; Date endDate = null;
if (StringUtils.isNotBlank(dateString)){
String[] ss = StringUtils.split(dateString, "~");
if (ss != null && ss.length == 2){
String begin = StringUtils.trim(ss[0]);
String end = StringUtils.trim(ss[1]);
if (StringUtils.isNoneBlank(begin, end)){
beginDate = MyDateUtils.parseDate(begin);
endDate = MyDateUtils.parseDate(end);
}
}
}
return new Date[]{beginDate, endDate};
}
public static String dateToString(Date date) {
Calendar c1 = Calendar.getInstance();
c1.setTime(new Date());
SimpleDateFormat s1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") ;
Calendar c2 = Calendar.getInstance();
c2.setTime(date);
Long dValue = c1.getTimeInMillis() - c2.getTimeInMillis();
if(dValue<=1000*60) {
return "刚刚";
}else if(dValue<1000*60*60) {
return (dValue/(1000*60))+"分钟前";
}else if(dValue<1000*60*60*24) {
return (dValue/(1000*60*60))+"小时前";
}else if(dValue/10/10/10/60/60/24<30) {
if(dValue/(1000*60*60*24)==1) {
return "昨天";
}else if(dValue/(1000*60*60*24)==2) {
return "前天";
}else {
return (dValue/10/10/10/60/60/24)+"天前";
}
}else if(dValue/10/10/10/60/60/24<365){
return (dValue/1000/60/60/24/30)+"个月前";
}else {
return (dValue/1000/60/60/24/365)+"年前";
}
}
public static String dateToCompare(Date Onedate,Date TwoDate) {
Calendar c1 = Calendar.getInstance();
c1.setTime(Onedate);
Calendar c2 = Calendar.getInstance();
c2.setTime(TwoDate);
Long dValue = c1.getTimeInMillis() - c2.getTimeInMillis();
if(dValue<=1000*60) {
return "1分钟";
}else if(dValue<1000*60*60) {
return (dValue/(1000*60))+"分钟";
}else if(dValue<1000*60*60*24) {
return (dValue/(1000*60*60))+"小时";
}else if(dValue/10/10/10/60/60/24<30) {
if(dValue/(1000*60*60*24)==1) {
return "1天";
}else if(dValue/(1000*60*60*24)==2) {
return "2天";
}else {
return (dValue/10/10/10/60/60/24)+"天";
}
}else if(dValue/10/10/10/60/60/24<365){
return (dValue/1000/60/60/24/30)+"月";
}else {
return (dValue/1000/60/60/24/365)+"年";
}
}
public static String getSpecifiedDayAfter(String specifiedDay){
Calendar c = Calendar.getInstance();
Date date=null;
try {
date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);
} catch (ParseException e) {
e.printStackTrace();
}
c.setTime(date);
int day=c.get(Calendar.DATE);
c.set(Calendar.DATE,day+1);
String dayAfter=new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
return dayAfter;
}
public static String getFirstDayOfWeek(Date date) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
try {
cal.setTime(date);
cal.set(Calendar.DAY_OF_WEEK, 2);
} catch (Exception e) {
e.printStackTrace();
}
return format.format(cal.getTime());
}
public static String getLastDayOfWeek(Date date) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
try {
cal.setTime(date);
cal.set(Calendar.DAY_OF_WEEK, 1);
cal.set(Calendar.DATE, cal.get(Calendar.DATE) + 7);
} catch(Exception e) {
e.printStackTrace();
}
return format.format(cal.getTime());
}
public static Date getFirstOfWeek(Date date) {
Calendar currentDate = new GregorianCalendar();
currentDate.setFirstDayOfWeek(Calendar.MONDAY);
currentDate.set(Calendar.HOUR_OF_DAY, 0);
currentDate.set(Calendar.MINUTE, 0);
currentDate.set(Calendar.SECOND, 0);
currentDate.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
return currentDate.getTime();
}
public static Date getLastOfWeek(Date date) {
Calendar currentDate = new GregorianCalendar();
currentDate.setFirstDayOfWeek(Calendar.MONDAY);
currentDate.set(Calendar.HOUR_OF_DAY, 23);
currentDate.set(Calendar.MINUTE, 59);
currentDate.set(Calendar.SECOND, 59);
currentDate.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
return currentDate.getTime();
}
public static String getFirstDayOfYesWeek(){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
cal.add(Calendar.DAY_OF_MONTH, -7);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
String bTime = format.format(cal.getTime());
return bTime;
}
public static String getLastDayOfYesWeek(){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
String eTime = format.format(cal.getTime());
return eTime;
}
public static String getCurrentMonthFirstDay() {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cale = Calendar.getInstance();
cale.add(Calendar.MONTH, 0);
cale.set(Calendar.DAY_OF_MONTH, 1);
return format.format(cale.getTime());
}
public static String getYesMonthFirstDay(){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
cal.set(Calendar.DAY_OF_MONTH,1);
String bTime = format.format(cal.getTime());
return bTime;
}
public static Date getYesMonthFirstDayLast(){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
cal.set(Calendar.DAY_OF_MONTH,1);
return cal.getTime();
}
public static Date getYesMonthLastDayLast() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 0);
return cal.getTime();
}
public static String getCurrentMonthLastDay() {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cale = Calendar.getInstance();
cale.add(Calendar.MONTH, 1);
cale.set(Calendar.DAY_OF_MONTH, 0);
return format.format(cale.getTime());
}
public static String getYesMonthLastDay() {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 0);
String eTime = format.format(cal.getTime());
return eTime;
}
public static Date getPreOrNextDay(Date date,int num) {
Calendar cal = Calendar.getInstance();
cal.setTime (date);
cal.add(Calendar.DATE,num);
return cal.getTime();
}
public static Date getPreDay(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime (date);
cal.add(Calendar.DATE,-1);
return cal.getTime();
}
public static Date getNextDay(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime (date);
cal.add(Calendar.DATE,1);
return cal.getTime();
}
public static Date getMonthFirstDay(Date date){
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, 000);
cal.set(Calendar.DAY_OF_MONTH,1);
return cal.getTime ();
}
public static Date getpreMonth(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime (date);
cal.add(Calendar.MONTH, -1);
return cal.getTime ();
}
public static Date getPreOrNextMonth(Date date,int num){
Calendar cal = Calendar.getInstance();
cal.setTime (date);
cal.add(Calendar.MONTH, num);
return cal.getTime ();
}
public static boolean isEffectiveDate(Date nowTime, Date startTime, Date endTime) {
if (nowTime.getTime() == startTime.getTime()
|| nowTime.getTime() == endTime.getTime()) {
return true;
}
Calendar date = Calendar.getInstance();
date.setTime(nowTime);
Calendar begin = Calendar.getInstance();
begin.setTime(startTime);
Calendar end = Calendar.getInstance();
end.setTime(endTime);
if (date.after(begin) && date.before(end)) {
return true;
} else {
return false;
}
}
public static Date getMonthLastDay(Date date) {
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);
cal.add(Calendar.MONTH, 1);
cal.set(Calendar.DAY_OF_MONTH, 0);
return cal.getTime ();
}
public static String getBeforeMonth(){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.MONTH, -1);
Date m = c.getTime();
String mon = format.format(m);
return mon;
}
public static Date getPreOrNextMin(Date date,int num) {
Calendar cal = Calendar.getInstance();
cal.setTime (date);
cal.add(Calendar.MINUTE,num);
return cal.getTime();
}
public static List<HashMap> getMonthBetween2(String month) throws ParseException {
List<HashMap> result = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar min = Calendar.getInstance();
Calendar max = Calendar.getInstance();
min.setTime(sdf.parse(month + "-01"));
int year = max.get(Calendar.YEAR);
int mon = (max.get(Calendar.MONTH) + 1);
String curMon = year + "-" + (mon < 10 ? "0" + mon : mon);
if (month.equals(curMon)){
max.add(Calendar.DATE, 0);
} else {
max.setTime(sdf.parse(month + "-01"));
max.add(Calendar.MONTH, 1);
}
while (min.before(max)) {
HashMap param = new HashMap();
param.put("date", sdf.format(min.getTime()));
param.put("day", min.get(Calendar.DATE));
result.add(param);
min.add(Calendar.DAY_OF_MONTH, 1);
}
return result;
}
public static List<Date> getMonthBetween(Date date) {
List lDate = new ArrayList();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date monthFirstDay = getMonthFirstDay(date);
Calendar min = Calendar.getInstance();
Calendar max = Calendar.getInstance();
min.setTime(monthFirstDay);
max.add(Calendar.DATE, 0);
while (min.before(max)) {
lDate.add(sdf.format(min.getTime()));
min.add(Calendar.DAY_OF_MONTH, 1);
}
return lDate;
}
public static List<String> getMonthBetween(Date minDate, Date maxDate){
ArrayList<String> result = new ArrayList<String>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
Calendar min = Calendar.getInstance();
Calendar max = Calendar.getInstance();
min.setTime(minDate);
min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1);
max.setTime(maxDate);
max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);
Calendar curr = min;
while (curr.before(max)) {
result.add(sdf.format(curr.getTime()));
curr.add(Calendar.MONTH, 1);
}
return result;
}
public static List<String> getDaysBetween(Date minDate, Date maxDate){
ArrayList<String> result = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Calendar min = Calendar.getInstance();
Calendar max = Calendar.getInstance();
min.setTime(minDate);
max.setTime(maxDate);
Calendar curr = min;
while (curr.before (max)) {
result.add(sdf.format(curr.getTime()));
curr.add(Calendar.DAY_OF_MONTH, 1);
}
return result;
}
public static Date getDateHour(Date date,Integer hour) {
Calendar cal = Calendar.getInstance();
cal.setTime (date);
cal.set(Calendar.HOUR_OF_DAY, hour);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
return cal.getTime();
}
public static String getVersion(List<Date> dates) {
if (dates==null || dates.isEmpty()){
return null;
}
long temp = 0L;
for(Date date : dates){
temp += date.getTime();
}
String str = Long.toString(temp);
return str;
}
public static List<Date> getWeekList(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
if (1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
}
cal.setFirstDayOfWeek(Calendar.MONDAY);
int day = cal.get(Calendar.DAY_OF_WEEK);
cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
Date imptimeBegin =cal.getTime();
cal.add(Calendar.DATE, 6);
Date imptimeEnd = cal.getTime();
List lDate = new ArrayList();
lDate.add(imptimeBegin);
Calendar calBegin = Calendar.getInstance();
calBegin.setTime(imptimeBegin);
Calendar calEnd = Calendar.getInstance();
calEnd.setTime(imptimeEnd);
while (imptimeEnd.after(calBegin.getTime()))
{
calBegin.add(Calendar.DAY_OF_MONTH, 1);
lDate.add(calBegin.getTime());
}
return lDate;
}
public static boolean isSunday(Date date){
Calendar cal=Calendar.getInstance();
cal.setTime(date);
if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){
return true;
}
return false;
}
public static Map<String,Date> getTimeInterval(Date date) {
Map<String,Date> map = new HashMap<>();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
if (1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
}
cal.setFirstDayOfWeek(Calendar.MONDAY);
int day = cal.get(Calendar.DAY_OF_WEEK);
cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
map.put("BEGIN",cal.getTime());
cal.add(Calendar.DATE, 6);
map.put("END",new Date(cal.getTime().getTime()+ 24 * 60 * 60 * 1000 - 1));
return map;
}
public static int getWeeks() {
int week = 0;
Date today = new Date();
Calendar c = Calendar.getInstance();
c.setTime(today);
int weekday = c.get(Calendar.DAY_OF_WEEK);
if (weekday == 1) {
week = 7;
} else if (weekday == 2) {
week = 1;
} else if (weekday == 3) {
week = 2;
} else if (weekday == 4) {
week = 3;
} else if (weekday == 5) {
week = 4;
} else if (weekday == 6) {
week = 5;
} else if (weekday == 7) {
week = 6;
}
return week;
}
public static Date getMonthFirstDayNew(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH,1);
calendar.add(Calendar.MONTH,0);
return calendar.getTime();
}
public static Date getNextMonthFirstDayNew(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH,1);
calendar.add(Calendar.MONTH,1);
return calendar.getTime();
}
public static int getMonthDiff(Date d1, Date d2) {
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.setTime(d1);
c2.setTime(d2);
int year1 = c1.get(Calendar.YEAR);
int year2 = c2.get(Calendar.YEAR);
int month1 = c1.get(Calendar.MONTH);
int month2 = c2.get(Calendar.MONTH);
int day1 = c1.get(Calendar.DAY_OF_MONTH);
int day2 = c2.get(Calendar.DAY_OF_MONTH);
int yearInterval = year1 - year2;
if (month1 < month2 || month1 == month2 && day1 < day2) {
yearInterval--;
}
int monthInterval = (month1 + 12) - month2;
if (day1 < day2) {
monthInterval--;
}
monthInterval %= 12;
int monthsDiff = Math.abs(yearInterval * 12 + monthInterval);
return monthsDiff;
}
public static void main(String[] args) {
String aa = "2021-01-01 00:00:00";
String bb = "2021-01-01 00:00:00";
boolean cc = parseDate(aa).after(parseDate(aa));
int vvv = getMonthDiff(parseDate(bb),parseDate(aa));
System.out.println(vvv);
}
}