Java 如何使用Selenium从URL中提取特定格式的日期?

Java 如何使用Selenium从URL中提取特定格式的日期?,java,selenium,date-format,Java,Selenium,Date Format,使用: 我得到这样的东西: String URL = driver.getCurrentUrl(); 我必须提取日期并以这种格式打印:yyyy-mm-dd,即获取2020-11-30。有人知道吗? 谢谢 您可以使用给定的URL字符串创建一个Map paramMap 处理URL字符串,并将参数名称作为键和参数值作为值存储在此映射中 从这个Map中获取键datepicker的值,将其解析为日期对象,并将日期对象格式化为所需格式的字符串。由于java.util的日期时间API及其格式化API,Sim

使用:

我得到这样的东西:

String URL = driver.getCurrentUrl();
我必须提取日期并以这种格式打印:yyyy-mm-dd,即获取2020-11-30。有人知道吗? 谢谢

  • 您可以使用给定的URL字符串创建一个
    Map paramMap
  • 处理URL字符串,并将参数名称作为键和参数值作为值存储在此
    映射中
  • 从这个
    Map
    中获取键
    datepicker
    的值,将其解析为日期对象,并将日期对象格式化为所需格式的字符串。由于
    java.util
    的日期时间API及其格式化API,
    SimpleDataFormat
    已经过时且容易出错,因此我建议您使用。有关现代日期时间API的更多信息,请访问
  • 我已经用这两种方法编写了解决方案,现代的
    java.time
    date-time API和传统的
    java.util
    date-time API

    firstname=&lastname=&sex=Male&exp=1&datepicker=11%2F30%2F2020&photo=&continents=asia&submit=
    

    我假设getCurrentUrl()返回完整的url,而不仅仅是查询字符串

    在高层次上,我认为这个过程是

  • 将查询字符串解析为映射
  • 将日期选择器值从mm dd yyyy转换为yyyy mm dd
  • 步骤1和2可以使用库(如OkHttp)完成

    2020-11-30
    2020-11-30
    
    如果您不想使用该库

    步骤3有一些选项,这取决于您需要的健壮程度

  • 直接字符串操作
  • 使用库或内置日期实用程序
  • 如果这无关紧要,那么字符串操作将是最简单的。只需创建一个带有yyyy、“-”和mm-dd的新字符串

    缺点是它没有提供任何验证日期的方法

    这里有一个库选项

    final HttpUrl currentUrl = HttpUrl.parse(driver.getCurrentUrl());
    if (currentUrl != null) {
        final String inputDate = currentUrl.queryParameter("datepicker");
    }
    

    燕-有更新吗?
    final HttpUrl currentUrl = HttpUrl.parse(driver.getCurrentUrl());
    if (currentUrl != null) {
        final String inputDate = currentUrl.queryParameter("datepicker");
    }
    
    SimpleDateFormat parseFormatter = new SimpleDateFormat("dd-MM-yyyy");
    Date date = parseFormatter.parse(inputDate);
    
    SimpleDateFormat outputFormatter = new SimpleDateFormat("yyyy-MM-dd");
    
    String date = outputFormatter.format(date);
    System.out.println(date);