我在哪里可以从MediaStore获得视频的拍摄日期?我从MediaStore获得了以下字段。
MediaStore.Video.Media.DATE_MODIFIED
MediaStore.Video.Media.DATE_TAKEN
MediaStore.Video.Media.DATE_ADDED
这些字段返回的似乎是默认值-
dateModified: 1477043336
dateTaken: 1477043336000
dateAdded: 1477043352
格式化日期-
dateModified: 01/01/1970
dateTaken: 01/01/1970
dateAdded: 01/01/1970
我仔细检查了股票画廊〉随机视频文件,我确实看到了正确的日期。我看了看MediaStore中的视频列,我没有看到任何其他列有正确的日期。
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
String formattedDate = dateFormat.format(new Date(row.getColumnIndex(MediaStore.Video.Media.DATE_MODIFIED)));
String dateModified = dateFormat.format(new Date(row.getColumnIndex(MediaStore.Video.Media.DATE_MODIFIED)));
String dateTaken = dateFormat.format(new Date(row.getColumnIndex(MediaStore.Video.Media.DATE_TAKEN) * 1000L));
String dateAdded = dateFormat.format(new Date(row.getColumnIndex(MediaStore.Video.Media.DATE_ADDED) * 1000L));
Log.d(TAG, "dateModified: "+dateModified);
Log.d(TAG, "dateTaken: "+dateTaken);
Log.d(TAG, "dateAdded: "+dateAdded);
Log.d(TAG, "dateModified: "+row.getString(row.getColumnIndex(MediaStore.Video.Media.DATE_MODIFIED)));
Log.d(TAG, "dateTaken: "+row.getString(row.getColumnIndex(MediaStore.Video.Media.DATE_TAKEN)));
Log.d(TAG, "dateAdded: "+row.getString(row.getColumnIndex(MediaStore.Video.Media.DATE_ADDED)));
5条答案
按热度按时间v9tzhpje1#
ih99xse12#
查看界面上的注解,
DATE_ADDED
和DATE_MODIFIED
被注解为自纪元以来的秒数,而不是毫秒数。然而,DATE_TAKEN
被注解为自纪元以来的毫秒数。注解中的这种差异解释了CommonsWare的答案中所指出的零的差异。它也指导了用法:
由于日期格式化程序通常需要以米利斯为单位的时间戳,因此应首先将秒值乘以1000。
hrirmatl3#
下面是一个简单的函数,用于获取日期格式的实际结果。
zphenhs44#
这些字段返回的似乎是默认值
我不知道为什么第二个1的末尾多了三个0。但是,使用a Unix date converter site:
如果
dateTaken
中没有零,那么它和dateModified
是一样的,所以,假设你能找出零的来源(比如随机决定将这个值乘以1000L),那么你就有了有效的时间戳。bvn4nwqk5#
在android中将纪元转换为正常日期的语法如下
将纪元转换为“dd/MM/yyyy HH:mm:ss”日期格式表示1477043336 = 2016年10月21日09:48:56