#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))
и так далее для вашей следующей операции.