说我有一个网址:
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%3A10%3A04 +%2B0300
对于空格,我需要%20而不是+。 实现此目标的最佳方法是什么?我尝试使用URLEncoder并创建URI / URL对象,但没有一个是正确的。
答案 0 :(得分:0)
我建议使用20180906T223329Z
之类的标准格式简化问题。
将您的输入字符串解析为OffsetDateTime
。搜索堆栈溢出,因为已经讨论了很多次。
将offset-from-UTC调整为零,以调整为UTC本身。
OffsetDateTime odtUtc = odt.withOffsetSameInstant( ZoneOffSet.UTC ) ;
然后以标准ISO 8601格式创建文本。这些格式的“基本”版本最大程度地减少了定界符的使用。 T
将年-月-日与小时-分钟-秒分开。最后的Z
表示UTC,并发音为“ Zulu”。示例:
20180906T223329Z
使用DateTimeFormatter
类生成字符串。
DateTimeFormatter f = DateTimeFormatterofPattern( "uuuuMMdd'T'HHmmssX" ) ;
String output = odtUtc.format( f ) ;
最后,通过URL编码器运行该输出。