2017-10-11 1 views
-1

Je dois passer '2017-01-01 00:00:00' à URl mais je ne peux pas comme les navigateurs représente space character avec %20 donc je dois d'abord convertir 2017-01-01 00:00:00 en 2017-01-01%2000:00:00. Je peux le faire facilement avec des séparations et d'autres méthodes, mais je suis confus si java fournit des fonctions intégrées.Java: convertir '2017-01-01 00:00:00' à '2017-01-01% 2000: 00: 00'?

MISE À JOUR: merci pour downvote précieux et des réponses, mais URLEncoder.encode convertit 2017-01-01 00:00:00 à 2017-01-01+00%3A00%3A00 et non 2017-01-01%2000:00:00 et le lien fourni par downvoters didnot aide soit. et je dois enregistrer cette date sur le disque avec 2017-01-01 00:00:00 et je ne veux pas le décoder à nouveau et aussi sur le serveur il y a un contrôle strict regex qui permet seulement ces formats spécifiques et ils ne se sont pas souciés de urldecode donc mon option est d'utiliser cette donne le format ie '2017-01-01% 2000: 00: 00` et rien d'autre; Bien sûr, je peux faire un simple remplacement d'espace avec% 20 et tout ira bien, alors encore une fois j'ai demandé s'il y a une fonction java qui fait cette conversion comme si nous pouvions fournir un format et nous restituer la valeur formatée. Cela peut sembler stupide alors encore une fois j'ai demandé si c'est possible.

+0

est votre entrée un pur 'CHAINE' ou objet temporel tel que 'Date' ou' LocalDateTime'? – Al1

Répondre

1

Vous pouvez utiliser URLEncoder ...

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

Ou bien utiliser l'URI complète de URIBuilder pour construire le client HTTP Apache, par exemple:

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();