从MediaStore获取视频的添加/修改/拍摄日期

问题描述 投票:0回答:3

我从哪里可以获得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)));
android date video mediastore last-modified
3个回答
1
投票

返回的那些字段似乎是默认值

我不知道为什么你的第二个最后有三个额外的零。但是,使用a Unix date converter site

  • dateModified = 1477043336 =星期五,2016年10月21日09:48:56 GMT
  • dateAdded = 1477043352 =星期五,21十月2016 09:49:12 GMT

你的dateTaken,没有零,和dateModified一样。因此,假设您可以找出零的来源(例如通过随机决定将值乘以1000L),您就拥有了有效的时间戳。


1
投票

在android中将epoch转换为正常日期的语法如下

long date=System.currentTimeMillis(); //current android time in epoch 

将纪元转换为“dd / MM / yyyy HH:mm:ss”dateformat表示1477043336 = 21/10/2016 09:48:56

String NormalDate = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new java.util.Date(date));

0
投票

这是一个简单的函数来获取日期格式的实际结果。

public String getDate(long val){
   val*=1000L;
   return new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new java.util.Date(val));
}
© www.soinside.com 2019 - 2024. All rights reserved.