Преобразовать мм-дд-гггг в гггг-мм-дд

#java #android #sqlite

#java #Android #sqlite

Вопрос:

Когда я получаю текущую дату, я извлекаю месяц, день и год, использую конструктор строк и в итоге получаю формат мм-дд-гггг, который я помещаю в textview. Когда я сохраняю данные в sqlitedb, я просто беру дату из textview и вставляю ее. Это плохо работает для функций даты, поскольку для них требуется формат гггг-мм-дд.

Каков наилучший способ справиться с этим?

Ответ №1:

Используйте два SimpleDateFormat экземпляра.

 String dateString1 = "16-04-2011";
Date date = new SimpleDateFormat("dd-MM-yyyy").parse(dateString1);
String dateString2 = new SimpleDateFormat("yyyy-MM-dd").format(date);
System.out.println(dateString2); // 2011-04-16
// ...
  

Но лучше просто использовать java.util.Date все время для удержания значения и применять форматирование только во внешнем интерфейсе. JDBC предлагает PreparedStatement#setDate() задать java.sql.Date в строке SQL.

 preparedStatement.setDate(1, new java.sql.Date(date.getTime()));
  

С другой стороны, чтобы получить его из базы данных, просто используйте ResultSet#getDate() и передайте его в java.util.Date .

 Date date = resultSet.getDate("columnname");
  

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

1. 1 для получения даты из базы данных в виде объекта Date. Затем вы можете отформатировать дату по мере необходимости в каждом конкретном представлении.

Ответ №2:

Другой подход, который вы могли бы использовать:

 /**
 * This Method Takes an Input String in the format of MM/dd/yyyy
 * and converts it to yyyy-MM-dd
 *
 * @param originalString
 * @return
 */
private String convertMMddyyyyToyyyyMMdd(String originalString) {
    StringBuilder dateBuilder = new StringBuilder();
    dateBuilder = dateBuilder.append(originalString.substring(6)).append("-").append(originalString.substring(0, 2)).append("-").append(originalString.substring(3, 5));
    return dateBuilder.toString();
}