【问题标题】:Java : convert '2017-01-01 00:00:00' to '2017-01-01%2000:00:00'? [duplicate]Java:将“2017-01-01 00:00:00”转换为“2017-01-01%2000:00:00”? [复制]
【发布时间】:2017-10-11 19:11:40
【问题描述】:

我需要将“2017-01-01 00:00:00”传递给 URl,但我不能因为浏览器用 %20 表示 space character,所以我需要先将 2017-01-01 00:00:00 转换为 2017-01-01%2000:00:00。我可以通过拆分和其他方法轻松做到这一点,但如果 java 提供任何内置函数,我会感到困惑。

更新: 感谢宝贵的投票和回答,但URLEncoder.encode 转换 2017-01-01 00:00:002017-01-01+00%3A00%3A00 而不是 2017-01-01%2000:00:00 和 downvoters 提供的链接也没有帮助。 我需要用2017-01-01 00:00:00将这个日期保存在磁盘上,我不想再次解码它,而且在服务器上也有严格的正则表达式检查,只允许这种特定格式,他们不关心urldecode所以我的选择是使用该给定格式,即“2017-01-01%2000:00:00”,仅此而已; 当然,我可以用 %20 对空格进行简单的替换,一切都会好起来的,然后我再次询问是否有任何 java 函数只能进行这种转换,例如我们是否可以提供格式并将格式化的值返回给我们。这听起来可能很愚蠢,然后我又问这是否可能。

【问题讨论】:

  • 您的输入是纯String 还是DateLocalDateTime 等时间对象?

标签: java datetime


【解决方案1】:

你可以使用URLEncoder ...

String encoded = URLEncoder.encode("2017-01-01 00:00:00", "UTF-8")

或者使用 Apache HTTP 客户端的 URIBuilder 来构建完整的 URI,例如:

URIBuilder uriBuilder = new org.apache.http.client.utils.URIBuilder("http://host/endPoint");
uriBuilder.addParameter("parameterName", "2017-01-01 00:00:00");
String url = uriBuilder.toString();

【讨论】:

    猜你喜欢
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    相关资源
    最近更新 更多