Вопрос

У меня есть строка в стандарте ISO 8601. Формат, который содержит дату / время, возвращаемое из веб-сервиса, как так:

String dtStart = "2010-10-15T09:27:37Z"

Как я могу получить это в объект, такой как время или дата? Я изначально хочу выводить его в другом формате, но позже нужно будет делать другие вещи позже (то есть, возможно, использовать в другом формате).

Ваше здоровье

Это было полезно?

Решение

String dtStart = "2010-10-15T09:27:37Z";  
SimpleDateFormat  format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");  
try {  
    Date date = format.parse(dtStart);  
    System.out.println(date);  
} catch (ParseException e) {  
    e.printStackTrace();  
}

Это то, что вы ищете. Есть существующий пост об этой проблеме.

Другие советы

Этот вопрос был задан в 2010 году и вернулся тогда, что это было исправлено, что либо SimpleDateFormat Или Joda-Time будет инструменты, которые вы должны использовать. Это довольно давно назад сейчас. Сегодня использование

    Instant iStart = Instant.parse(dtStart);

Да, это просто. Ваша строка в формате ISO 8601, а классы из java.time, современные API Java Date и Time Parse ISO 8601 без какого-либо явного форматирования. Instant это только один из этих классов.

Вопрос: Могу ли я использовать Java.time на Android?

Да, java.time Хорошо работает на старших и более новых устройствах Android. Это просто требует, по крайней мере, Java 6.

  • В Java 8 а позже и на более новых устройствах Android (от API Level 26, мне сказали), встроенный современный API.
  • В Java 6 и 7 получают Backport Threeten, Backport новых классов (Threeten для JSR 310; см. Ссылки внизу).
  • В (более старый) Android используйте Android Edition Threeten Backport. Это называется Threetenabp. И убедитесь, что вы импортируете дату и классы времени от org.threeten.bp с подпаками.

Ссылки

Вы можете использовать SimpleDateFormat метод анализа или использовать Datetimeformat jodatime создать dateTimeformatter и Разбор к объекту dateTime соответственно

Предположим, вы хотели бы рассчитать разницу времени, учитывая значения разделения столбца.
финиш --> 15:24:04
Начало --> 09:27:37
Без использования Дата а также SimpleDateFormat., Я сделал этот путь:

String tStart = "09:27:37";
String tFinish = "15:24:04";

String[] sTimeHourMinSec = tStart.split(":");
int sHour = Integer.valueOf(sTimeHourMinSec[0]);
int sMin = Integer.valueOf(sTimeHourMinSec[1]);
int sSec = Integer.valueOf(sTimeHourMinSec[2]);

String[] fTimeHourMinSec = tFinish.split(":");
int fHour = Integer.valueOf(fTimeHourMinSec[0]);
int fMin = Integer.valueOf(fTimeHourMinSec[1]);
int fSec = Integer.valueOf(fTimeHourMinSec[2]);

int diffTotSec = (fHour - sHour) * 3600 + (fMin - sMin) * 60 + (fSec - sSec);
int diffHours = diffTotSec / 3600;
int diffMins = (diffTotSec % 3600) / 60;
int diffSecs = (diffTotSec % 3600) % 60;

System.out.println("Difference: " + diffHours + " h " + diffMins + " m " + diffSecs + " sec");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top