#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();
}