import javautilDate;
public class Test {
/
@param args
/
public static void main(String[] args) {
//表示我也没什么用过日历类去处理时间,大概思路就是去判断是否同一年and是否同一月
Systemoutprintln(equals(new Date(), new Date(new Date()getTime() + 1500000000l)));
Systemoutprintln(equals(new Date(), new Date(new Date()getTime() + 3000000000l)));
}
public static boolean equals(Date date1, Date date2) {
Calendar calendar1 = CalendargetInstance();
calendar1setTime(date1);
Calendar calendar2 = CalendargetInstance();
calendar2setTime(date2);
int year1 = calendar1get(CalendarYEAR);
int year2 = calendar2get(CalendarYEAR);
int month1 = calendar1get(CalendarMONTH);
int month2 = calendar2get(CalendarMONTH);
Systemoutprintln(year1 + " " + month1);
Systemoutprintln(year2 + " " + month2);
return calendar1get(CalendarYEAR) == calendar2get(CalendarYEAR) && calendar1get(CalendarMONTH) == calendar2get(CalendarMONTH);
}
}import javatextParseException;
import javatextSimpleDateFormat;
import javautilCalendar;
import javautilDate;
public class Test {
public static void main(String[] args) {
try {
//时间转换类
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdfparse("2014-1-10");
Date date2 = sdfparse("2012-12-20");
//将转换的两个时间对象转换成Calendard对象
Calendar can1 = CalendargetInstance();
can1setTime(date1);
Calendar can2 = CalendargetInstance();
can2setTime(date2);
//拿出两个年份
int year1 = can1get(CalendarYEAR);
int year2 = can2get(CalendarYEAR);
//天数
int days = 0;
Calendar can = null;
//如果can1 < can2
//减去小的时间在这一年已经过了的天数
//加上大的时间已过的天数
if(can1before(can2)){
days -= can1get(CalendarDAY_OF_YEAR);
days += can2get(CalendarDAY_OF_YEAR);
can = can1;
}else{
days -= can2get(CalendarDAY_OF_YEAR);
days += can1get(CalendarDAY_OF_YEAR);
can = can2;
}
for (int i = 0; i < Mathabs(year2-year1); i++) {
//获取小的时间当前年的总天数
days += cangetActualMaximum(CalendarDAY_OF_YEAR);
//再计算下一年。
canadd(CalendarYEAR, 1);
}
Systemoutprintln("天数差:"+days);
} catch (ParseException e) {
eprintStackTrace();
}
}
}
Console:
天数差:386public class DateKit{
/
时间段的比较处理 , 如果包含了传来的 时段 了, 就说明 时间冲突了
@return
/
public static boolean isContain(Date[] a, Date[] b) {
long astatr = a[0]getTime();
long aend = a[1]getTime();
long bstatr = b[0]getTime();
long bend = b[1]getTime();
// a0 包在了 b0 ~ b1 之间
if( astatr>=bstatr && astatr<=bend ) return true;
// b0 包在了 a0 ~ a1 之间
if( astatr<=bstatr && aend>=bstatr ) return true;
return false;
}
/
时间段的比较处理 , 如果包含了传来的 时段 了, 就说明 时间冲突了 , (允许首尾相等而不包含的情况)
@return
/
public static boolean isContainEnd(Date[] a, Date[] b) {
long astatr = a[0]getTime();
long aend = a[1]getTime();
long bstatr = b[0]getTime();
long bend = b[1]getTime();
// a0 包在了 b0 ~ b1 之间
if( astatr>=bstatr && astatr<bend ) return true;
// b0 包在了 a0 ~ a1 之间
if( astatr<=bstatr && aend>bstatr ) return true;
// 相等
if( astatr==bstatr && aend==bend ) return true;
return false;
}
// 功能 工具 扩展
public static boolean isContain(String astatr,String aend, String bstatr,String bend) {
return isContain(new String[]{astatr , aend}, new String[]{bstatr , bend});
}
public static boolean isContain(String[] aStr, String[] bStr) {
return isContain(aStr, bStr, "yyyy-MM-dd HH:mm:ss");
}
public static boolean isContain(String[] aStr, String[] bStr, String pattern) {
final SimpleDateFormat SF = new SimpleDateFormat(pattern);
try {
return isContain(new Date[]{SFparse(aStr[0]), SFparse(aStr[1])} , new Date[]{SFparse(bStr[0]), SFparse(bStr[1])});
} catch (Exception e) {
eprintStackTrace();
}
return false;
}
public static boolean isContainEnd(String astatr,String aend, String bstatr,String bend) {
return isContainEnd(new String[]{astatr , aend}, new String[]{bstatr , bend});
}
public static boolean isContainEnd(String[] aStr, String[] bStr) {
return isContainEnd(aStr, bStr, "yyyy-MM-dd HH:mm:ss");
}
public static boolean isContainEnd(String[] aStr, String[] bStr, String pattern) {
final SimpleDateFormat SF = new SimpleDateFormat(pattern);
try {
return isContainEnd(new Date[]{SFparse(aStr[0]), SFparse(aStr[1])} , new Date[]{SFparse(bStr[0]), SFparse(bStr[1])});
} catch (Exception e) {
eprintStackTrace();
}
return false;
}
}
测试:
public static void main(String[] args) throws ParseException {final SimpleDateFormat SF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date[] a = {SFparse("2017-07-06 11:53:00"), SFparse("2017-07-06 14:52:00")};
Date[] b = {SFparse("2017-07-06 14:52:00"), SFparse("2017-07-06 16:52:00")};
Systemoutprintln("您好, 智能的电脑! 请问:");
for (Date date : a) {
Systemoutprint(datetoString() + " ~ ");
}
Systemoutprintln("包含:");
for (Date date : b) {
Systemoutprint(datetoString() + " ~ ");
}
Systemoutprintln("吗");
boolean ret = DateKitisContain(a, b);
Systemoutprintln("o(∩_∩)o 哈哈 ~ 我猜是: " + ret);
ret = DateKitisContainEnd(a, b);
Systemoutprintln("o(∩_∩)o 哈哈 ~ 允许首尾相等 我猜是: " + ret);
}
找了半天, 没见写的好的 自己动手写个, 问题是 两个时段,, 大部分人给的是 两个时间点
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)