工作经历时间段的比较

采用一个POJO类,用来存放时间段对象。

package com;

import java.util.Date;

public class TimeStore {

	public TimeStore() {
	}

	public TimeStore(Date startDate,Date endDate) {
		this.startDate = startDate;
		this.endDate = endDate;
	}

	/**
	 * 开始时间
	 */
	private Date startDate;
	/**
	 * 结束时间
	 */
	private Date endDate;

	public Date getStartDate() {
		return startDate;
	}

	public void setStartDate(Date startDate) {
		this.startDate = startDate;
	}

	public Date getEndDate() {
		return endDate;
	}

	public void setEndDate(Date endDate) {
		this.endDate = endDate;
	}
}

接下来,是最主要的用来比较时间段是否重合的部分。

package com;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * 比较时间段是否重合
 * @author w.s
 *
 */
public class DateDiffCompare {

	public static List<TimeStore> timeStoreList = new ArrayList<TimeStore>();

	public static void main(String[] args) {
//		Date startDate1 = formatDate("2011/5");
//		Date endDate1 = formatDate("2012/5");
//
//		Date startDate2 = formatDate("2013/4");
//		Date endDate2 = formatDate("2014/5");
//
//		System.out.println(judgeIsRightfulInline(startDate1, endDate1, startDate2, endDate2));

		timeStoreList.add(new TimeStore(formatDate("2011/5"), formatDate("2012/5")));
		timeStoreList.add(new TimeStore(formatDate("2013/4"), formatDate("2014/5")));

		Date startDate = formatDate("2012/6");
		Date endDate = formatDate("2013/3");
		System.out.println(judgeDateDiffIsRightInTimeQueue(startDate, endDate));
	}

	/**
	 * 判断当前时间段是否在历史时间队列中
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	public static boolean judgeDateDiffIsRightInTimeQueue(Date startDate,Date endDate){
		boolean result = true;
		for (TimeStore timeStore : timeStoreList) {
			result = judgeIsRightfulInline(startDate, endDate, timeStore.getStartDate(), timeStore.getEndDate());
			if(result==false){
				break;
			}
		}
		return result;
	}

	/**
	 * 判断两段日期之间是否有交叉
	 * @param startDate1
	 * @param endDate1
	 * @param startDate2
	 * @param endDate2
	 * @return
	 */
	public static boolean judgeIsRightfulInline(Date startDate1,Date endDate1,Date startDate2,Date endDate2){
		/**
		 * 第一段工作经历开始时间和结束时间不正确
		 */
		if(startDate1.after(endDate1)){
			return false;
		}
		/**
		 * 第二段工作经历开始和结束时间不正确
		 */
		if(startDate2.after(endDate2)){
			return false;
		}
		/**
		 * 第二段工作经历在第一段工作经历之前
		 */
		if(startDate1.after(startDate2) && startDate1.after(endDate2)){
			return true;
		/**
		 * 第二段工作经历和第一段工作经历前交叉
		 */
		}else if(startDate1.after(startDate2) && startDate1.before(endDate2)){
			return false;
		/**
		 * 第二段工作经历在第一段工作经历之间
		 */
		}else if(startDate1.before(startDate2) && endDate2.before(endDate1)){
			return false;
		/**
		 * 第二段工作经历和第一段工作经历后交叉
		 */
		}else if(startDate2.before(endDate1) && endDate2.after(endDate1)){
			return false;
		/**
		 * 第二段工作经历在第一段工作经历之后
		 */
		}else if(startDate2.after(endDate1) && endDate2.after(endDate1)){
			return true;
		}else if(startDate2.before(startDate1) && endDate2.after(endDate1)){
			return false;
		}else{
			System.out.println("如果存在时间段相等的情况(开始和结束时间点相同),则这里默认返回false.");
			return false ;
		}
	}

	public static SimpleDateFormat formatDate = new SimpleDateFormat("yyyy/MM");

	/**
	 * 获取日期对象
	 * @param str
	 * @return
	 */
	public static Date formatDate(String str){
		try {
			return formatDate.parse(str);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

}

如果有更高的算法的,可以贴出来分享。

时间: 2024-10-17 14:28:33

工作经历时间段的比较的相关文章

找工作经历心得总结

这几天还是没有找到实习工作,觉得实际上自己还有很多事是还没有拎清除,所以得静下来好好做个总结反思. 首先是没有给自己准确定位.这个主要原因是自己的技术不过关也是很难给自己定位.学习的时候其实自己多少有些畏难情绪,所以对于很多都是"浅尝辄止",对于没有深入研究过的东西我都不敢说自己了解,毕竟技术这种东西都是深层次的,尤其IT,还是日新月异.在学习阶段自己还有个很大的问题就是不管在时间还是任务上都没有合理的规划,每次都是东一块西一块,导致结果也是东丢一块西掉一块的. 再者也就是没有合理规划

某大型导购网站的工作经历——记录我5个月的帝都之旅

曾经看到过这么一句话,为什么当战争胜利的时候要奖赏Leader而不是冲锋陷阵,因为一场战争缺胳膊少腿的小兵?某人曾回答,因为当战争失败的时候,被砍头的不是小兵,而是Leader... 这段对话深入我心,古人云:择良木而栖.古往今来,因为栖息在良木之上而流芳千古的不在少数,但是我依旧相信,更多能人巧匠因为朽木烂泥而埋没在历史长河. 我喜欢文字,迷恋文字,简单的文字巧妙的组合在一起,成就了不少传世之作,一篇樱色玻璃酒樽的推荐让我倾心不已,桜ほのか,好奇是什么样的人才能写出这样的文字,同时也好奇什么样

cs硕士妹子找工作经历【阿里人搜等互联网】

摘自  北邮人论坛  分享他人成功的求职经历.原文如下: 唉,妹子本来是本着写面经的态度与大家分享,之自己情况也是想说明一啥都不会的菜鸟在悲催的逆境下也可以凭自身努力找到offer,没想到被评为作秀...妹子能力背景确实和说的一样,但是从9月开始不是天天熬夜看了一个多月的书吗?菜鸟也可以拼命锻炼翅膀的... 妹子还是把背景舍去,只写面经吧   妹子是cs土著一枚,折腾了半年找工作,现在貌似也是尘埃落定了,手里还有2个offer待定,还在纠结中. 妹子开始找工作时间挺晚,是9月7号左右,之前完全没

工作经历-1-从FreeBSD学起

这里就说一说本人的工作经历.纯属流水文章,长而枯燥. 从去年(2013年)3月份开始,那时还没有毕业,就进入了一家网络设备的公司工作,从事路由方面的开发,主要是负责开发路由的功能模块.我的上司(WMM)就是负责公司路由方面的主要开发,在我进来之前,应该是唯一路由开发,公司的路由系统也就是他开发的.在从事路由开发方面,也得到了WMM的很大帮助. 开始时是从FreeBSD系统学习起,自己啃了FreeBSD的使用手册 http://www.freebsd.org/doc/zh_CN.UTF-8/boo

悟六年工作经历

时光飞逝,日夜交替,春夏秋冬.短暂并着漫长的六年时光,从非科班出身到踏上J2EE这条不归路,经历喜忧参半.认真总结实属势在必行,忆得失,话未来. 大学毕业那时,头脑一片空白.虽然农村生活朴实,但从未有过经济压力,一次同学的偶然介绍,从此踏上IT行业漫漫长路.在学校去过三次图书馆,借了一本书,明显我不是喜欢读书的孩子,大学的日子得过且过着,没有思想,更没有理想.从10年到12年的第一份工作,介于生存的压力,完全转变大学时代的生活,白天上班,晚上自学,看教学视频,累了睡,睡醒了继续学.那段时间学习的

校招找工作经历,好事多磨

好久没有写博客了,都说每一次写博客都说一次梳理生活工作的好机会,我也想每天都来梳理一下生活与工作,但就是太懒,很多时候有很多话想要写下来但是一想到要打那么多的字心情一下子就萎了,我觉得以后的聪明人一定会发明一种能够读意念的装置,不用打字想一想就能够把想说的话打出来,想想又不太现实,人脑这么复杂的东西,特别是现在人总是会想太多,连路上见个漂亮的姑娘都能YY,如何真有那种能够写出意念的东西,那么每天该产生多少垃圾呢? 今天是个特别的日子,阔别了那个曾经待了两年零十五天的地方,重新和小伙伴们生活在一起

大找工作经历

我种下一颗种子,终于长出了果实. 2014年8月22日这一天,我一共打通了60多通电话.我在一个呼叫中心工作,是一名市场调研(电话销售)员.我给大量的企业打电话,来调研或者发现他们是否有购买产品的意向. 2014年6月21日这一天,我一共打了20多通电话.我在一家小婚介公司工作,是一名红娘(电话销售).我给大量的单身男女打电话,来寻找客户. 2014年5月14日这一天,我看了几十份简历,打了几通电话.我在一家小猎头公司工作,是一名猎头.我在给几个职位寻找候选人. 当2014年3月底,我开始大范围

简历中的工作经历要怎么写?

一位外企人事经理表示:"我每天用半小时浏览50份或更多的简历,如果前10秒钟未能发现任何成果表述,那么这份简历就成为历史了."虽然大部分求职顾问都主张在简历中突出业绩,但是鲜有应聘者真正重视这一建议.相反,在他们的简历中,全是职务名称.日期和职责等方面的内容.而进行自我评价则通篇充满"主要贡献"."富于活力的方案"和"显著提高"之类的形容词.这样的简历是很难让招聘者"动心"的. 与此相反,我们可以用数字来突

分享我编程工作经历及对软件开发前景的看法

本人一直从事互联网行业,熟练C#.javascript,熟悉C\C++,JAVA,php,object-c,熟练的开发工具有Visual Studio,数据库是MS SQL SERVER.这两天实在是无聊,回忆一下本人的工作经历,一路走来很辛苦,很坎坷,现在都快40岁了,还没有自己的事业,正处于人生的十字路口.本人大专毕业的,当年高考分数到了本科线,由于本科的计算机专业分数线比较高,我考的分数还达不到,但本人有特别喜欢计算机专业,所以当时就选了一个专科学校读的选了计算机专业,回过头来看,我觉得我