Я искал всюду, но я ничего не мог найти в синтаксическом анализе объекта json времени date в android.Как разобрать время JSON в Java/Android
Я пытаюсь преобразовать этот JSON 2016-08-12T20:07:59.518451
получить ТОЛЬКО время как этот 20:07
и отформатировать его в правильный часовой пояс UTC/GMT +1 час.
Я мог бы сделать это в javascript, но я не смог получить его прямо в Java/Android.
Есть ли метод, который обрабатывает это для меня или мне нужно будет использовать регулярное выражение, чтобы получить правильное время?
EDIT: вот код. 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 –
http://stackoverflow.com/questions/2580925/simpledateformat-parsing-date-with-z-literal проверить это и http://stackoverflow.com/ вопросы/6543174/how-can-i-parse-utc-date-time-string-in-something-more-readable – user5599807