Извлечение из строки в Android - PullRequest
0 голосов
/ 31 мая 2018

Поскольку я новичок в программировании, мне нужна помощь с этим.Если у меня есть строка, например, как эта строка.Здесь вы видите дату и время, включенные в одну единственную строку.

String date_time = "2018-03-18T01:39:45+01:00";

Есть ли в любом случае, чтобы вытащить дату только из строки.

"2018-03-18"

Дело в том, что у меня есть полная строка с датой и временем, но мне нужно извлечь дату для себя и времядля себя, поэтому я могу использовать его отдельно.

РЕДАКТИРОВАТЬ

Извините, но я думаю, что недавняя жара взяла меня.я забыл упомянуть, что строки хранятся в массиве

List<String> allDate_time = new ArrayList<String>();

JSONObject date_timeArray = json2.getJSONObject( 0 );

String date_time = date_timeArray.getString( "date_time" );

allDate_time.add( date_time );

dateView = (TextView) findViewById( R.id.dateTX );

dateView.setText( allDate_time.get( 0 ));

Ответы [ 4 ]

0 голосов
/ 01 июня 2018

java.time

    List<String> allDate_time = new ArrayList<>();
    String date_time = "2018-03-18T01:39:45+01:00";
    allDate_time.add( date_time );

    for (String dateTimeString : allDate_time) {
        OffsetDateTime odt = OffsetDateTime.parse(dateTimeString);
        LocalDate date = odt.toLocalDate();
        LocalTime timeOfDay = odt.toLocalTime();
        System.out.println("Date: " + date + ". Time: " + timeOfDay + '.');
    }

Вывод:

Дата: 2018-03-18.Время: 01: 39: 45.

Поскольку java.time класс *1011*, современный Java-интерфейс даты и времени, анализирует ваши строки даты и времени без какого-либо явного средства форматирования, он почтипожалей не использовать это.Объяснение, почему это так просто, состоит в том, что ваша строка имеет формат ISO 8601, и классы java.time анализируют этот формат как свой формат по умолчанию.

Если вы не уверены, что смещение в строке (здесь +01:00) соглашается с часовым поясом вашего пользователя, конвертируйте в этот часовой пояс перед извлечением даты и времени.Например:

        ZonedDateTime zdt = odt.atZoneSameInstant(ZoneId.of("America/Argentina/Cordoba"));
        LocalDate date = zdt.toLocalDate();
        LocalTime timeOfDay = zdt.toLocalTime();

С этим изменением вывод будет:

Дата: 2018-03-17.Время: 21: 39: 45.

Мои рекомендации:

  • Обрабатывать дату и время как объекты даты и времени, используя классы из стандартной библиотеки.В долгосрочной перспективе это стабильнее и проще, чем полагаться на манипуляции со строками, и дает код, который намного легче читать и поддерживать.
  • Вместо старых классов Date и SimpleDateFormat, использованных в одном другом ответе,используйте современные в java.time.Date и SimpleDateFormat являются устаревшими, и, в частности, SimpleDateFormat общеизвестно хлопотно.

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

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

  • В Java 8 и более поздних версиях и на более новых устройствах Android (от уровня API 26, как мне сказали), современный API поставляется встроенным.
  • В Java 6 и 7 получите ThreeTen Backport, бэкпорт новых классов (ThreeTen для JSR 310; см. ссылки внизу).
  • На (более старом) использовании AndroidAndroid-версия ThreeTen Backport.Это называется ThreeTenABP.И убедитесь, что вы импортируете классы даты и времени из org.threeten.bp с подпакетами.

Ссылки

0 голосов
/ 31 мая 2018

Вам нужно разобрать Date.Пример: -

Function For Converting String To Date:-

   private Date toDate(String date)
    {
      Date date;
      SimpleDateFormat format = new SimpleDateFormat("format of your date",Locale.Default);
       try {
           date = format.parse(date);
           }
           catch (ParseException e) {
           e.printStackTrace();
           date = null;
      }
     return date;
    }

Function Implementation:-

String date = "2018-03-18T01:39:45+01:00";//You Can Use The Function Everytime You Want To Convert String To Date.
Date date = toDate(date);//You Can Take Out Date And Time Differently From Date.
String time = new SimpleDateFormat("H:mm").format(date);//You Can Change The Format You Wanted.
0 голосов
/ 31 мая 2018

Попробуйте эти решения

Решение 1: -

String date_time=allDate_time.get( 0 );

, затем извлеките дату из строки date_time

String date=date_time.substring(0,date_time.indexOf("T"));

Решение 2: -

String date_time=allDate_time.get( 0 );
String date=date_time.substring(0,10);
0 голосов
/ 31 мая 2018

Вы можете извлечь подстроку с самого начала, пока не найдете символ 'T'.Существуют и другие даты / время, но приведенный ниже код должен удовлетворить вашу потребность

String date_time = "2018-03-18T01:39:45+01:00";
    String date=date_time.substring(0,date_time.indexOf("T"));
    String time=date_time.substring(date_time.indexOf("T")+1,date_time.length());

РЕДАКТИРОВАТЬ: Для массива вы можете сделать, как показано ниже.Перейдите к массиву и получите дату и время.

for (String dateTime: allDate_time){
    String date=date_time.substring(0,date_time.indexOf("T"));
    String time=date_time.substring(date_time.indexOf("T")+1,date_time.length());
}
...