Как получить дату из строки без форматирования?

у меня есть

String s = "2020-02-22"`;

и я хочу изменить его на Date, чтобы я мог хранить его в своей базе данных, в которой есть столбец, который не принимает ничего, кроме Date.

Я пытался использовать класс LocalDate, но он в API 26. Будем признательны за любую помощь.


person sammy    schedule 13.02.2021    source источник
comment
Вы пробовали java.util.Date?   -  person Gautham M    schedule 13.02.2021
comment
@GauthamM да, я пробовал это с simpleDateFormat, но он делает отформатированную дату, но я хочу, чтобы моя дата была такой же, как моя строка   -  person sammy    schedule 13.02.2021
comment
Вы говорите, что хотите, чтобы дата также сохранялась в формате yyyy-MM-dd в базе данных?   -  person Gautham M    schedule 13.02.2021
comment
@GauthamM нет, я хочу, чтобы это сохранялось как строка 2020-02-22   -  person sammy    schedule 13.02.2021
comment
@GauthamM формат добавляет другую информацию, которую я не хочу   -  person sammy    schedule 13.02.2021
comment
Какую базу данных вы используете? Поскольку база данных хранит это поле как date, а не как string, оно будет храниться только таким образом. При извлечении данных из базы данных вы можете преобразовать их обратно в желаемый string формат, используя SimpleDataFormat   -  person Gautham M    schedule 13.02.2021


Ответы (1)


Предположим, что вы извлекаете дату из базы данных и передаете ее следующему методу:

public String formatDate(Date date){
    SimpleDateFormat ff = new SimpleDateFormat("yyyy-MM-dd");           
    return ff.format(date);
}

EDIT: на основе ввода от Basil вы можете попробовать Дешугаринг Android, чтобы использовать функциональные возможности Java 8+ без необходимости минимального уровня API. Это позволит использовать LocalDate вместо старого класса java.util.Date. Используя LocalDate, вы можете проанализировать строку на сегодняшний день как:

public LocalDate getDate(String dateString) {
    return LocalDate.parse(dateString);
}
person Gautham M    schedule 13.02.2021
comment
К сведению: несколько лет назад эти ужасные классы были вытеснены современными классами java.time, определенными в JSR 310. Предлагать эти устаревшие классы в 2021 году — плохой совет. - person Basil Bourque; 14.02.2021
comment
@BasilBourque Да, но судя по вопросу, похоже, что используется более старая версия. - person Gautham M; 14.02.2021
comment
Новейшие инструменты Android переносят большую часть функций java.time в более старые версии Android посредством «дешугаринга API». - person Basil Bourque; 14.02.2021
comment
@BasilBourque Обновлен ответ на основе комментария. - person Gautham M; 14.02.2021