Data de seqüência no horário da Epoch

Estou um pouco confuso em datas. Atualmente estou trabalhando no aplicativo de clima e tudo funciona bem .. Eu só quero lidar com esse tipo de formato em meu próprio formato desejável.

2017-09-10T18:35:00+05:00 

Eu só quero converter essa data em Epoch Time e então eu estabeleço a data no meu formato de desejo ::

para J-SON

ou eu quero converter essa data em menos figura, ou seja, Sol, 9 de setembro, 9:23, etc.

http://dataservice.accuweather.com/currentconditions/v1/257072?apikey=JTgPZ8wN9VUy07GaOODeZfZ3sAM12irH&language=en-us&details=true

Use uma instância SimpleDateFormat para analisar a string em um object Date :

 DateFormat parser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX"); Date date = parser.parse("2017-09-10T18:35:00+05:00"); 

E, em seguida, use outro SimpleDateFormat para exibi-lo:

 DateFormat format = new SimpleDateFormat("EEE, dd MMMMM h:mm a"); String formatted = format.format(date); // Sun, 10 September 1:35 PM 

ThreeTenABP

As outras respostas estão corretas, mas desatualizadas antes de serem escritas. Atualmente, eu recomendo que você use a API moderna de data e hora em Java, conhecida como JSR-310 ou java.time . Seu formato de string de data e hora é ISO 8601, que as classs modernas “entendem” como padrão.

Você pode usar a API moderna no Android ainda? Certamente! As classs JSR-310 foram retornadas para o Android no projeto ThreeTenABP . Todos os detalhes estão nesta pergunta: Como usar o ThreeTenABP no Projeto Android .

  long epochTime = OffsetDateTime.parse("2017-09-10T18:35:00+05:00") .toInstant() .getEpochSecond(); 

O resultado é 1505050500.

Exemplo de como converter isso em uma data e hora legíveis por humanos:

  String formattedDateTime = Instant.ofEpochSecond(epochTime) .atZone(ZoneId.of("Africa/Lusaka")) .format(DateTimeFormatter.ofPattern("EEE, d MMMM h:mm a", Locale.ENGLISH)); 

Isso produz Sun, 10 September 3:35 PM . Forneça a região e a cidade corretas para o ID do fuso horário desejado. Se você quiser confiar na configuração de fuso horário do dispositivo, use ZoneId.systemDefault() . Consulte a documentação de DateTimeFormatter.ofPattern () para as letras que você pode usar na string de padrão de formato ou use DateTimeFormatter.ofLocalizedDateTime() para um dos formatos padrão de seu código de idioma.

Você pode usar o formatador SimpleDate para analisar sua data como string em epoch

  String input = "2017-09-10T18:35:00+05:00"; SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); try { Date date = sf.parse(input); long dateInEpochFormatInMilliSeconds = date.getTime(); //if you want this in seconds then long dateInEpochFormatInSeconds = date.getTime()/1000L; //if you want to show only date month and year then SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); String date = sdf.format(dateInEpochFormatInMilliSeconds); //This date String will contain the date in dd-MM-yyyy format } catch (ParseException| ArithmeticException e) { e.printStackTrace(); } 
  String time_at_which_weather_capture = "Time : "; DateFormat dateFormat = new SimpleDateFormat("EEE,d M yyyy h:MM a"); long timeInMillieSec = 0 ; try { Date date = dateFormat.parse(readyToUpdate.getTime()); timeInMillieSec = date.getTime(); } catch (ParseException e) { e.printStackTrace(); } time.setText(time_at_which_weather_capture + String.valueOf(time_fetcher(timeInMillieSec))); public String time_fetcher (long time_coming_to_its_original_form) { Date date = new Date (time_coming_to_its_original_form); SimpleDateFormat sdf = new SimpleDateFormat("EEE, d M yyyy h:MM a"); return sdf.format(date); }