Как извлечь подстроку из строки?

#android #string #contacts

#Android #строка #Контакты

Вопрос:

На самом деле мне нужно найти сегодняшний день рождения в контактах. У меня есть строковая переменная типа String value="2014-06-24".

Я хочу получить месяц и дату строковой переменной для сравнения с сегодняшней датой, чтобы найти день рождения. Или у него есть какие-то другие методы?

Комментарии:

1. используйте SimpleDateFormat и не выполняйте манипуляции со строками с типами дат

2. Пожалуйста, попробуйте разделить с помощью «-«, а индекс месяца равен (1), а индекс дня равен (2).

3. Зачем кому — то делить String их ? SimpleDateFormat это намного проще и менее подвержено ошибкам.

Ответ №1:

Используйте SimpleDateFormate, если вы не получаете, вы можете использовать приведенный ниже метод

 String[] arr = yourStringDate.split("-");
String year = arr[0];
String month = arr[1];
String day = arr[2];
 

Комментарии:

1. Не знаете, кто довел анф…? Я думаю, это хорошее решение. Спасибо вам… 1

2. Я не являюсь автором этого вопроса.

3. кроме формата массива, у него есть любой формат для хранения

4. что ты хочешь сделать?

Ответ №2:

Вы можете использовать SimpleDateFormat для анализа дат следующим образом:

 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
    Date date = dateFormat.parse("2014-06-24");
} catch (ParseException e) {
    // This exception occurs when the String could not be parsed!
    e.printStackTrace();
}
 

Когда у вас есть Date объекты, вы можете сравнить их с before() и after() подобным образом:

 if(dateA.after(dateB)) {
    // dateA is after dateB
} else {
    // dateA is before dateB
}
 

Вы можете использовать Calendar объект для получения дополнительной информации из Date объекта.

 Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

int month = calendar.get(Calendar.MONTH)   1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
 

Комментарии:

1. у меня есть сомнения в этом. месяц с назначенной даты равен 06. но текущий месяц возвращается как 6. как сравнить это

2. Я не понимаю, что вы имеете в виду?

3. хорошо, хорошо. какое значение вы получили из int month = calendar.get(Calendar. МЕСЯЦ) 1;

4. Это возвращает текущий месяц как целое число.

5. Тебе не нужно ничего из этого делать. Просто сохраните все ваши даты как Date объект и сравните их с before() и after() , как я продемонстрировал в своем ответе.

Ответ №3:

Вы можете использовать следующий способ, чтобы найти дату и месяц из строки значения:

 Date date = System.currentTimeMillis();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
try {
    date = formatter.parse(value);
} catch (ParseException e) {
    // This exception occurs when the String could not be parsed!
    e.printStackTrace();
}

Calendar cal = Calendar.getInstance();
cal.setTime(date);
int birthDay = cal.get(Calendar.DATE);
int birthMonth = cal.get(Calendar.MONTH);
 

затем

 Calendar currentCal = Calendar.getInstance();
Date today =  currentCal.getTime();
 

затем вы можете использовать сравнение дат следующим образом :

if(date.before(today) || date.after(today)) и так далее для вашей следующей операции.