日期的Java URL编码(ZULU格式)[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

说我有一个网址:

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对象,但它们都没有出现。

java encoding timestamp format
1个回答
0
投票

我建议使用像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编码器运行该输出。

© www.soinside.com 2019 - 2024. All rights reserved.