这个问题在这里已有答案:
说我有一个网址:
https://example/dateParam/
我有一个用户输入的日期值(ZULU格式),例如:
2016-07-20 13:10:04 +0300.
我希望结果是一个正确编码的URL:
https://example/dateParam/2016-07-20%2013%3A10%3A04%20%2B0300
我试图做的时候:
String dateParam = "2016-07-20 13:10:04 +0300";
String encodedParam = URLEncoder.encode(dateParam, "UTF-8");
System.out.println(encodedParam);
我得到以下结果:
2016-07-20 + 13%3 10%3 04 + 2%b 0300
对于空间我需要%20而不是+。实现这一目标的最佳方法是什么?我尝试了URLEncoder并创建了URI / URL对象,但它们都没有出现。
我建议使用像20180906T223329Z
这样的标准格式来简化问题。
将输入字符串解析为OffsetDateTime
。搜索Stack Overflow,因为已经多次覆盖。
调整offset-from-UTC为零,UTC本身。
OffsetDateTime odtUtc = odt.withOffsetSameInstant( ZoneOffSet.UTC ) ;
然后以标准ISO 8601格式创建文本。这些格式的“基本”版本最大限度地减少了分隔符的使用。 T
将年 - 月 - 天与小时 - 分 - 秒分开。最后的Z
意味着UTC,发音为“Zulu”。例:
20180906T223329Z
使用DateTimeFormatter
类生成String。
DateTimeFormatter f = DateTimeFormatterofPattern( "uuuuMMdd'T'HHmmssX" ) ;
String output = odtUtc.format( f ) ;
最后,通过URL编码器运行该输出。