记录一下今天解决怎么比较某个时间与当前时间大小问题

记录一下今天解决怎么比较某个时间与当前时间大小问题

  1. 先说一下业务前提:
    一个合同的业务,当前合同里有一个投标日期,但是这个投标日期要加上2个月也就是60天以后才能加入到数据库消息表,但是在加入消息表之前先要跟当前时间去比较,如果比当前时间小,则会插入数据生成一条消息记录(此消息主要是为了提醒负责人此合同需要归档),否则不会生成消息记录。

  2. 在与当前时间比较大小,试过很多方法(网上浏览),有把Date类型时间转换成String类型去比较的,用得是compareTo( )方法,发现此方法不好用,于是又把String类型时间转换成Date类型去比较的,用得是before()方法,但是结果还是不好用
    如:2021-06-15 比当前时间 2021-06-03大,根据实际业务就不允许插入数据,但是before()方法仍然可以

  3. 解决方法:使用LocalDate 类型日期格式,将Date类型日期格式转换成LocalDate类型日期格式

在这里插入图片描述

4.代码附上:

@JmsListener(destination = Topics.TOPIC_PROJECT_STATUS)
	public void proectStatus(ContractChange change) throws Exception {
		if (logger.isDebugEnabled()) {
			logger.debug("Receive  Topic({}) : {}", Topics.TOPIC_PROJECT_STATUS, change.getType());
		}
		
		Contract contract  = change.getContract();
		String construtionName = contract.getConstrutionName();
		
		//根据建设单位查询supplier表里的负责人
		Supplier supplier = messageMapper.selectDirector(construtionName);
		String username = supplier.getDirector();
		// 根据用户名查询负责人用户信息
		SysUser user = userService.selectUserByUserName(username);
		Date prodDate = contract.getProdDate();
		Date archiveDate = contract.getArchiveDate();
		if (prodDate !=null && contract.getProjectStatus().equals("竣工") && archiveDate != null) {
			Calendar remindDate = Calendar.getInstance();
			remindDate.setTime(prodDate);
			//将获取到的投标日期新增两个月
			remindDate.add(Calendar.MONTH, 2);
			Date  date = remindDate.getTime();	
			//获取当前日期
			LocalDate now = LocalDate.now();
			//投标日期转换类型
			LocalDate date1 =date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
			//比较投运日期加60天后是否比当前时间小,小于当前时间则插入到我的消息给建设单位负责人发送消息			
			if (date1.isBefore(now)){
				Message message = new Message();
				message.setMessageType(contract.getProjectStatus());
				message.setMessageState("未读");
				message.setName(contract.getName());
				message.setRemindDate(date);
				message.setContractId(contract.getId());
				message.setUserId(user.getUserId());
				message.setProjectCode(contract.getProjectCode());
				message.setMessageContent(contract.getName()+"项目已经已经投运,请及时处理");
				int rows = messageMapper.insertMessage(message);

			}
		}
		
		
	}

5.希望对有帮助的小伙伴多多转载欧,谢谢

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值