如何更改日期格式以解析为url_string?

时间:2018-08-01 08:46:53

标签: java android

我正在使用API​​通过Android(java)中的URL链接来检索出租车数据。

我能够使用以下格式成功检索数据。但是,日期和时间2018-07-17T18%3A49%3A00是硬编码的,我希望可以使用当前日期和时间动态地完成。

String URL_STRING =
                "https://api.data.gov.sg/v1/transport/taxi-availability?date_time=2018-07-17T18%3A49%3A00";

我尝试了以下方法,但无法动态获取。我收到来自API服务器的空响应。如果您能对我做错的事情有所了解,就表示赞赏。

Date currentTime = Calendar.getInstance().getTime();

SimpleDateFormat formatter = new SimpleDateFormat("YYYY-MM-DD'T'HH:MM:SS");

String URL_STRING =
                "https://api.data.gov.sg/v1/transport/taxi-availability?date_time=" + formatter.format(currentTime);

2 个答案:

答案 0 :(得分:0)

一种可能的解决方案是使用本机方法对URL进行编码:

String encodedDate = URLEncoder.encode(myString, "utf-8");

另一个问题是您的格式设置有误,引用to the official documentationYYYY应该是yyyy,而您的分钟时间应该是mm而不是MM MM是月份)。由于大写字母是毫秒,所以 seconds是小写字母

使用上述方法,您的代码将如下所示

Date currentTime = Calendar.getInstance().getTime();

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
String mDate = formatter.format(currentTime);

String URL_STRING = "https://api.data.gov.sg/v1/transport/taxi-availability?date_time=" + URLEncoder.encode(mDate, "utf-8");

我写的时候没有编译器,所以让我知道它是否正确。

希望这会有所帮助

答案 1 :(得分:0)

Date currentTime = Calendar.getInstance().getTime();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
String URL_STRING ="https://api.data.gov.sg/v1/transport/taxi-availability?date_time=" + URLEncoder.encode(formatter.format(currentTime),"UTF-8");

确保处理URLEncoder.encode()的异常