我在Stackoverflow链接中通过以下answered question。其代码如下所示。
在这里,我对图像的DATE_TAKEN部分感兴趣。我已经尝试过这个代码,除了日期之外它工作得很好。它在logcat中给出一些数字...例如:'date_taken是2007年11月26日的图像,显示Log.i的日期是“1196066358000”。有没有办法将其解析回实际日期格式。
String[] projection = new String[]{
MediaStore.Images.Media._ID,
MediaStore.Images.Media.BUCKET_DISPLAY_NAME,
MediaStore.Images.Media.DATE_TAKEN
};
// Get the base URI for the People table in the Contacts content provider.
Uri images = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
// Make the query.
Cursor cur = managedQuery(images,
projection, // Which columns to return
"", // Which rows to return (all rows)
null, // Selection arguments (none)
"" // Ordering
);
Log.i("ListingImages"," query count="+cur.getCount());
if (cur.moveToFirst()) {
String bucket;
String date;
int bucketColumn = cur.getColumnIndex(
MediaStore.Images.Media.BUCKET_DISPLAY_NAME);
int dateColumn = cur.getColumnIndex(
MediaStore.Images.Media.DATE_TAKEN);
do {
// Get the field values
bucket = cur.getString(bucketColumn);
date = cur.getString(dateColumn);
// Do something with the values.
Log.i("ListingImages", " bucket=" + bucket
+ " date_taken=" + date);
阿巴特,
也许你所获得的价值是自纪元以来的UTC毫秒。要将其转换为可读格式,请尝试以下操作:
Calendar myCal;
myCal.setTimeInMillis(milliVal);
Date dateText = new Date(myCal.get(Calendar.YEAR)-1900,
myCal.get(Calendar.MONTH),
myCal.get(Calendar.DAY_OF_MONTH),
myCal.get(Calendar.HOUR_OF_DAY),
myCal.get(Calendar.MINUTE));
Log.d("MyApp", "DATE: " + android.text.format.DateFormat.format("MM/dd/yyyy hh:mm", dateText));
如果您要阅读MediaStore
文档,您会看到DATE_TAKEN
被定义为“自1970年1月1日以来以毫秒为单位拍摄图像的日期和时间。”
您可以使用Calendar
和Date
类将此值转换为人类可读的格式。
Integer dateTaken = cursor.getInt(cursor.getColumnIndex(MediaStore.Images.Media.DATE_TAKEN));
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(dateTaken);
Date date = calendar.getTime();
Log.d("TAG", "Date taken = " + date.toString());
如果我没弄错的话,DATE_TAKEN是一个毫秒格式的日期。您应该能够使用Date结构(http://developer.android.com/reference/java/util/Date.html)构造函数来创建一个对象,该对象将毫秒日期解析为您可以使用的内容。
我用以下方式解决了这个问题:
int dateindex = resultSet.getColumnIndexOrThrow(MediaStore.Images.Media.DATE_TAKEN);
Date dateText;
dateText = new Date(resultSet.getLong(dateindex));
现在您可以将Date对象转换为人类语言:
SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
datestr = dateFormat.format(dateText);