Я предлагаю использовать объекты DateTime и DateInterval.
$date1 = new DateTime("2007-03-24");
$date2 = new DateTime("2009-06-26");
$interval = $date1->diff($date2);
echo "difference " . $interval->y . " years, " . $interval->m." months, ".$interval->d." days ";
// shows the total amount of days (not divided into years, months and days like above)
echo "difference " . $interval->days . " days ";
подробнее php DateTime :: diff manual
Из руководства:
Начиная с PHP 5.2.2, объекты DateTime можно сравнить с помощью операторов сравнения.
$date1 = new DateTime("now"); $date2 = new DateTime("tomorrow"); var_dump($date1 == $date2); // bool(false) var_dump($date1 < $date2); // bool(true) var_dump($date1 > $date2); // bool(false)
Я считаю, что вам нужно передать URI места хранения (файла) через намерение takePictureIntent , используя
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, your_image_Uri);
Затем вы можете открыть файл и извлечь его в байт [] и хранить его как блоб. Удобство SQLiteDatase, метод insert делает это очень простым.
например. если предположить, что byte [] имеет имя my_picture, то
ContentValues cv = new ContentValues();
cv.put(column_name_for_picture,my_picture);
long id = insert("the_table_name",null,cv);
Вы извлекаете сохраненную картинку из БД, используя метод запроса SQLiteDatabase , а затем извлекаете байт []. используя метод курсора getBlob .
Если размер изображения составляет 2 МБ или больше, вы не сможете получить его , так как для CursorWindow существует ограничение 2 МБ (1 МБ для более старых версий Android) ). Я бы предположил, что даже на 1 МБ у вас могут возникнуть проблемы с извлечением изображений.
Рекомендуется не хранить изображение в базе данных, а хранить путь к файлу, в котором изображение хранится в базе данных.
Возможно, вы захотите взглянуть на Как использовать изображения в Android SQLite, которые больше, чем ограничения CursorWindow? , поскольку это показывает обходной путь , хотя НЕ рекомендуется . [+1112]