📄 mydate.java
字号:
* 指定日期减去指定的天数的操作
* @param date
* @param days
* @return
* @throws IllegalArgumentException
*/
public String reduceDays(Date date, int days) throws
IllegalArgumentException {
return reduceDays(formatDate(date), days);
}
/**
* 指定日期减去指定的天数的操作
* @param date
* @param days
* @return
* @throws IllegalArgumentException
*/
public String reduceDays(String date, int days) throws
IllegalArgumentException {
validate(date);
ymd = splitYMD(date);
if (isLeapYear(ymd[Y])) {
ymd[D] -= days;
if (ymd[D] <= 0) {
ymd[M]--;
if (ymd[M] < 1) {
ymd[M] += 12;
ymd[Y]--;
}
ymd[D] = ymd[D] + DAYS_P_MONTH_LY[ymd[M] - 1];
if (ymd[D] <= 0) {
reduceDays(formatYear(ymd[Y]) +
formatMonthDay(ymd[M]) +
formatMonthDay(1),
abs(ymd[D] - 1));
}
}
} else {
ymd[D] -= days;
if (ymd[D] <= 0) {
ymd[M]--;
if (ymd[M] < 1) {
ymd[M] += 12;
ymd[Y]--;
}
ymd[D] = ymd[D] + DAYS_P_MONTH_CY[ymd[M] - 1];
if (ymd[D] <= 0) {
reduceDays(formatYear(ymd[Y]) +
formatMonthDay(ymd[M]) +
formatMonthDay(1),
abs(ymd[D] - 1));
}
}
}
return formatYear(ymd[Y]) +
formatMonthDay(ymd[M]) +
formatMonthDay(ymd[D]);
}
/**
* 格式化一个日期字符串
* @param date
* @return
*/
public static String formatDate(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
return sdf.format(date);
}
/**
* 将代表日期的字符串分割为代表年月日的整形数组
* @param date
* @return
*/
public static int[] splitYMD(String date) {
int[] ymd = {
0, 0, 0};
ymd[Y] = Integer.parseInt(date.substring(0, 4));
ymd[M] = Integer.parseInt(date.substring(4, 6));
ymd[D] = Integer.parseInt(date.substring(6, 8));
return ymd;
}
/**
* 将不足两位的月份或日期补足为两位
* @param decimal
* @return
*/
public static String formatMonthDay(int decimal) {
DecimalFormat df = new DecimalFormat("00");
return df.format(decimal);
}
/**
* 将不足四位的年份补足为四位
* @param decimal
* @return
*/
public static String formatYear(int decimal) {
DecimalFormat df = new DecimalFormat("0000");
return df.format(decimal);
}
/**
* 取绝对值操作
* @param num
* @return
*/
public static int abs(int num) {
return (num > 0) ? num : -num;
}
public static String getYear(String date) {
return date.substring(0, 4);
}
public static String getMonth(String date) {
return date.substring(4, 6);
}
public static String getDay(String date) {
return date.substring(6, 8);
}
public static String addMonth(String date) {
int month = setZ(date.substring(4, 6));
int year = setZ(date.substring(0, 4));
if (month + 1 > 12) {
year++;
month = 1;
} else {
month++;
}
return setZ(year) + "" + setZ(month) + date.substring(6, 8) +
date.substring(8, 10) +
date.substring(10, 12) + date.substring(12, 14);
}
public static int setZ(String i) {
if (!i.equals("0")) {
if (i.startsWith("0")) {
return Integer.parseInt(i.substring(1, 2));
}
}
return Integer.parseInt(i);
}
public static String setZ(int i) {
if (i < 10 && i > 0) {
return "0" + i;
} else {
return "" + i;
}
}
public static String chengeDays(String date, int day) {
return date.substring(0, 6) + setZ(day) + date.substring(8, 14);
}
public static String jianMonth(String date) {
int month = setZ(date.substring(4, 6));
int year = setZ(date.substring(0, 4));
if (month - 1 < 1) {
year--;
month = 12;
} else {
month--;
}
return setZ(year) + "" + setZ(month) + date.substring(6, 8) +
date.substring(8, 10) +
date.substring(10, 12) + date.substring(12, 14);
}
public static String printDays() {
String date = getDate();
return getYear(date) + "." + getMonth(date) + "." + getDay(date);
}
public static String printDays(String date) {
return getYear(date) + "." + getMonth(date) + "." + getDay(date);
}
public int getMonthDays(int month, boolean type) {
int res = 0;
switch (month) {
case 1:
res = 31;
break;
case 2:
if (type) {
res = 29;
} else {
res = 28;
}
break;
case 3:
res = 31;
break;
case 4:
res = 30;
break;
case 5:
res = 31;
break;
case 6:
res = 30;
break;
case 7:
res = 31;
break;
case 8:
res = 31;
break;
case 9:
res = 30;
break;
case 10:
res = 31;
break;
case 11:
res = 30;
break;
case 12:
res = 31;
break;
}
return res;
}
public int getYearDay(int years) {
int res = 0;
for (int i = 1; i <= years; i++) {
if (this.isLeapYear(i)) {
res += 366;
} else {
res += 365;
}
}
return res;
}
public static long jianfa(String star, String end) {
long days=0;
try {
SimpleDateFormat f = new SimpleDateFormat("yyyy-mm-dd");
Date d1 = null;
d1 = f.parse(formatDate(star));
Date d2 = f.parse(formatDate(end));
days=(long)((d2.getTime()-d1.getTime())/(60*60*24));
} catch (ParseException ex) {
ex.printStackTrace();
}
return days;
}
public static String formatDate(String date)
{
String res=date.substring(0,4)+"-"+date.substring(4,6)+"-"+date.substring(6,8);
return res;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -