java如何从不规则的字符串中截取出日期

作者:上善若水滴世界 时间:2022-05-28 02:33:58 

从不规则的字符串中截取出日期

最近在项目中需要远程调接口,从String字符串中截取出日期,想了好久,最后用java8新特性,解决了,java8,还是比较好用。

代码

获取到的字符串,例如:

焦化化产车间四期出水(测试排口),2019/10/19 10:00:00,pH平均值 超标,值:5.00

炼焦一车间焦炉推焦除尘(测试排口)2019/7/14 14:00:00,二氧化硫折算平均值 超标,值:51.27

升级版本的字符串:

某某公司的测试,2018年08月27日03:00,当日NOX小时浓度超标3%以上已达4次。

某某公司测试数据出铁场除尘(钢板),2017年11月18日14:23到2019年11月21日15:13,离线已达90小时"


 // 截取时间处理 -- java8
//content是获取的字符串
                   List<String> lists = Collections.singletonList(content);
                   String beginDate = lists.stream().map(e -> {
                       int lastIndexOf = e.lastIndexOf(":00");
                       int indexOf = e.indexOf(")");
                       String substring = e.substring(indexOf + 1, lastIndexOf + 3);
                       String trim = substring.replace(",", "").trim();
                       return trim;
                   }).findFirst().orElse(null);

/**
    * 升级版本
    * 截取时间处理 -- java8
    * content是获取的字符串
    */
                   List<String> lists = Collections.singletonList(content);
                   String beginDate = lists.stream().map(e -> {
                       int lastIndexOf;
                       int indexOf;
                       String trim;
                       lastIndexOf = e.lastIndexOf("到");
                       if (lastIndexOf == -1) {
                           lastIndexOf = e.lastIndexOf(":00");
                           if (lastIndexOf == -1) {// 防止不规则的字符串时间报错,至为空
                               return "";
                           }
                           indexOf = e.indexOf(",");
                           trim = e.substring(indexOf + 1, lastIndexOf + 3);
                       } else {
                           indexOf = e.indexOf(",");
                           String substring = e.substring(indexOf + 1, lastIndexOf);
                           trim = substring.replace(",", "").trim();
                       }
                       return trim;
                   }).findFirst().orElse(null);
                   String b = beginDate.replaceAll("[年,月]", "-");
                   // 至为空相关处理 -- 三目运算符 resultDto是自定义的实体
                   resultDto.setBeginDate(b.equals("") ? null : b);

注意substring()包左不包右,字符串中的标点为中文,这点需要注意

没有升级的输出结果

java如何从不规则的字符串中截取出日期

将yyyy/MM/dd形式的不规则日期转换成规则形式

例如:

2019/7/2 转换成 2019/07/02

代码如下


public static String toDate(String str) {
   String pattern = "\\d{4}\\/\\d{1,2}\\/\\d{1,2}";
   if (str != null && Pattern.matches(pattern, str)) {
       String[] date = StringUtils.split(str, "\\/");
       Calendar c1 = Calendar.getInstance();
       c1.set(Integer.parseInt(date[0]), Integer.parseInt(date[1]) - 1, Integer.parseInt(date[2]));

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
       return sdf.format(c1.getTime());
   }
   return null;
}

\\d{4}\\/\\d{1,2}\\/\\d{1,2}:在java中\\ 表示一个正则表达式的反斜杠,\\/表示斜杠的转义,\\\\表示一个普通的反斜杠。

来源:https://blog.csdn.net/qq_39150374/article/details/102717999

标签:java,字符串,截取,日期
0
投稿

猜你喜欢

  • 关于MyBatis中SqlSessionFactory和SqlSession简解

    2022-02-18 13:57:37
  • Spring Boot Admin 进行项目监控管理的方法

    2021-09-01 23:39:19
  • JavaScript 与 Java 区别介绍 学java怎么样

    2023-11-25 12:23:49
  • 如何写好一个Spring组件的实现步骤

    2023-01-08 20:24:12
  • 详解Java如何实现小顶堆和大顶堆

    2023-11-10 04:03:05
  • Java如何实现支付宝电脑支付基于servlet版本

    2021-12-11 04:39:47
  • 深入理解C#之继承

    2022-02-25 07:25:44
  • Java利用POI读取、写入Excel的方法指南

    2023-11-23 15:39:23
  • C#使用DoddleReport快速生成报表

    2022-05-31 06:39:59
  • 如何优雅的处理Spring Boot异常信息详解

    2023-11-29 09:50:02
  • 浅谈java项目与javaweb项目导入jar包的区别

    2023-11-11 11:06:19
  • C#开发微信公众号接口开发

    2023-10-14 11:49:01
  • 合成聚合复用原则_动力节点Java学院整理

    2023-06-27 22:05:20
  • java 配置MyEclipse Maven环境具体实现步骤

    2021-07-31 04:12:23
  • java导出生成word的简单方法

    2023-11-23 23:07:13
  • IntellJ IDEA神器使用技巧(小结)

    2023-08-08 22:01:44
  • SpringBoot整合OpenApi的实践

    2023-08-03 11:59:55
  • Java爬取豆瓣电影数据的方法详解

    2021-12-12 16:21:06
  • MyBatis注解实现动态SQL问题

    2023-08-19 02:34:09
  • 浅谈Java多进程程序的运行模式

    2021-07-06 11:06:49
  • asp之家 软件编程 m.aspxhome.com