【发布时间】:2016-08-14 06:41:23
【问题描述】:
我到处寻找,但我找不到任何关于在 android 中解析日期时间 json 对象的信息。
我正在尝试将此 JSON 2016-08-12T20:07:59.518451 转换为 仅 像 20:07 这样的时间,并将其格式化为正确的时区 UTC/GMT +1 小时。
我可以在 javascript 中做到这一点,但我无法在 Java/Android 中做到这一点。
有没有一种方法可以为我处理这个问题,或者我需要使用正则表达式来获得正确的时间?
编辑:这是代码。 expectedArrival 是带有 json 日期/时间的那个,我只想获取 UTC/GMT +1 小时时区的时间。
public class JSONTaskArrivals extends AsyncTask<String, String,List<ArrivalItem>> {
@Override
protected List<ArrivalItem> doInBackground(String... params) {
//json
HttpURLConnection connection = null;
BufferedReader reader = null;
try {
URL url = new URL(params[0]);
connection = (HttpURLConnection) url.openConnection();
connection.connect();
InputStream stream = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(stream));
StringBuffer buffer = new StringBuffer();
String line = "";
while((line = reader.readLine()) != null){
buffer.append(line);
}
String finalJSON = buffer.toString();
JSONArray parentArray = new JSONArray(finalJSON);
List<ArrivalItem> arrivalItems = new ArrayList<>();
int time = 0;
for (int i = 0; i < parentArray.length(); i++){
JSONObject finalObject = parentArray.getJSONObject(i);
ArrivalItem item = new ArrivalItem();
item.setDestination(finalObject.getString("destinationName"));
item.setEstimated(finalObject.getString("expectedArrival"));
time = finalObject.getInt("timeToStation")/60;
if(time < 1){
item.setLive("Due");
}else{
item.setLive(Integer.toString(time)+" mins");
}
arrivalItems.add(item);
}
return arrivalItems;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
} finally {
if (connection != null){
connection.disconnect();
}
try {
if (reader != null){
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(List<ArrivalItem> result) {
super.onPostExecute(result);
ArrivalsAdapter adapter = new ArrivalsAdapter(ArrivalsActivity.this, R.layout.arrivals_row, result);
lv = (ListView) findViewById(R.id.arrivals_listView);
lv.setAdapter(adapter);
}
}
【问题讨论】:
-
您可以尝试手动操作(例如,如果您在印度,请将您收到的时间增加 5 小时 30 分钟,如果日期也发生变化,请增加相应的日期)
-
@HarshitKumar 并没有真正的帮助。我想知道如何从那个 JSON 日期时间对象中获取时间
-
发布代码以便我们改进帮助......
-
@ΦXocę웃Пepeúpaツ 我现在有代码