最近做项目涉及到时间的计算,这里拿出一个以年为增长的计算,关于日期的计算可以借助Calendar类,其中涉及使用正则去得到字符串中的数字参加计算,顺带一提Pattern类和Matcher类。

Pattern类:pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数

Matcher类:Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要 调用 Pattern 对象的matcher 方法来获得一个 Matcher 对象。

部分代码如下:

    public int inserMaintainHeader(MaintainHeader maintainHeader) {maintainHeader.setId(IdGenerateUtil.generateId());maintainHeader.setCreateBy("test");maintainHeader.setCreateDate(new Date());Pattern pattern = Pattern.compile("[^0-9]");//这里前端传的值为"1年","2年"...而我们只需要拿到数字1或2去参与计算String warrantyPeriod = maintainHeader.getWarrantyPeriod();if (StringUtils.isNotBlank(warrantyPeriod)) {Matcher matcher = pattern.matcher(warrantyPeriod);String yearStr = matcher.replaceAll("");int year = Integer.parseInt(yearStr);//计算保养计划结束时间//1,合格证日期早于开梯日期Date qualifiedDate = maintainHeader.getQualifiedDate();//获取合格证日期Date ladderDate = maintainHeader.getLadderDate();//获取开梯日期Calendar calendar = new GregorianCalendar();Date afterDate = new Date();if (qualifiedDate.getTime() <= ladderDate.getTime()) {calendar.setTime(qualifiedDate);calendar.add(calendar.YEAR, year);afterDate=calendar.getTime();maintainHeader.setPlanEndDate(afterDate);}//2,合格证日期晚于开梯日期if (qualifiedDate.getTime() > ladderDate.getTime()) {calendar.setTime(maintainHeader.getInspectPassDate());calendar.add(calendar.YEAR, year);afterDate=calendar.getTime();maintainHeader.setPlanEndDate(afterDate);}}int i = this.dao.insert(maintainHeader);return i;}

Java中时间的计算相关推荐

  1. JAVA日期时间的计算

    最近,手头有不少项目,其中就有一个类似公文流转的项目,其中有一个模块是任务的制定,而在任务的类型中有一个循环任务,就是用户输入任务的开始日期.结束日期,还需要输入一个周期数,比如每周的星期几.每月的多 ...

  2. java中时间的转换相关问题整理

    前言 Java中时间转换主要是以下几种情形 String格式时间转换为Date,LocalDateTime,LocalDate,LocalTime 时间戳转换为Date,LocalDateTime,L ...

  3. Java中时间格式化(获取指定时间)

    Java中时间格式化(获取指定时间,七天前) 1.通过获取当前系统时间,格式化后转为"yyyy-MM-dd HH:mm:ss"格式并输出: 2.可获取指定时间,如七天前,一年前等, ...

  4. java中时间常用处理工具类-DateUtils

    仅供参考,收录了一些常用的java中关于时间的处理方法,希望能帮到你! import org.apache.commons.lang3.time.DateFormatUtils;import java ...

  5. java中商业数据计算时用到的类BigDecimal和DecimalFormat

    1.引言 借用<Effactive Java>这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确 ...

  6. Java中在时间戳计算的过程中遇到的数据溢出问题

    背景 今天在跑定时任务的过程中,发现有一个任务在设置数据的查询时间范围异常,出现了开始时间戳比结束时间戳大的奇怪现象,计算时间戳的代码大致如下. package com.lingyejun.authe ...

  7. java 中时间计算_java中关于时间的计算

    1.描述:在原有时间上增加一个时间差: 代码示例: Date psd = sysDate(); String workTimeP1 = mapP.get("WORK_TIME_") ...

  8. java 微秒 时间_Java中时间的计算 年月日小时分钟秒毫秒微秒

    //用到的类 DateUtils //这个类存在于 org.apache.commons.lang.time.DateUtils; //也就是这个包 commons-lang-2.3.jar //AP ...

  9. redistemplate hash 过期时间_完美!谈谈Java中时间控制的几种解决方案

    前言 需求是这样的,在与第三方对接过程中,对方提供了token进行时效性验证,过一段时间token就会失效.后台有定时任务在获取,但是偶尔会出现token失效,这是因为在获取的时候,定时任务正在跑,可 ...

最新文章

  1. * ngIf和* ngFor在同一元素上导致错误
  2. python最好用的助手_想学Python的小伙伴注意了,pip工具或许是您最好的助手!本文详解安装教程哦!...
  3. 你们可能都小看了Windows!
  4. OpenCV Mat遍历的方法
  5. Linux_ACL_su
  6. MYSQL--三种锁
  7. 消息称苹果、Epic开庭时间从2021年7月提前至5月份
  8. 蔚来否认关闭硅谷办公室 近期也没有回科创板的计划
  9. requests 超时关闭_requests获取响应时间(elapsed)与超时(timeout)
  10. Trump International Hotel Washington, D.C.宣布跻身猫途鹰“旅行者之选”美国获奖酒店四强之列
  11. 高等数学中的求极限公式
  12. 黑盒白盒软件测试报告,黑盒白盒测试报告结果_白盒测试黑盒测试方法_软件黑盒和白盒测试...
  13. IE8 Automation 服务器不能创建对象 解决方法
  14. 加减法叫做什么运算_加减法是什么意思
  15. [人工智能-深度学习-29]:卷积神经网络CNN - 全连接网络与卷积网络结构的互为等效与性能比较
  16. 关于PSINS运动轨迹仿真模块的理解和思考
  17. 小四川#TPP#谭平平越南游记谭之二 国穷民富
  18. NAND FLAASH基础
  19. poi实现单元格行合并
  20. 计算机图形设计与创意制作试题,计算机图形表现设计基础pdf

热门文章

  1. Kaptcha 图片验证码使用
  2. uniapp 检查网络状态并封装
  3. 时间戳转化为年、月、日、时、分、秒。
  4. 江西省光伏产业投资建设及运营现状分析报告2021版
  5. java切点类编写_SpringAOP切点函数实现原理详解
  6. 恭贺新春,猴年大吉!
  7. 卖电子资料怎么在闲鱼引流?精准引流核心玩法
  8. 折叠屏新纪元:华为过境,踏雪留痕
  9. Linux Ubuntu 解压文件时:NO such file
  10. WebConfig中的sessionState设置之不理