从画廊返回的日期总是 returns 1970 年 1 月 1 日
Date returned from Gallery always returns January 1 1970
我正在尝试建立一个图库 app.I 已从 MediaStore.Images
获取图像路径和添加日期。
我使用了以下代码:
public static ArrayList<String> getAllShownImagesPath(Activity activity) {
Uri uri;
Cursor cursor;
int column_index_data, column_index_folder_name;
int column_index_date;
ArrayList<String> listOfAllImages = new ArrayList<String>();
String absolutePathOfImage = null;
long dateofimage;
uri = android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
String[] projection = { MediaColumns.DATA,MediaColumns.DATE_ADDED,
MediaStore.Images.Media.BUCKET_DISPLAY_NAME };
cursor = activity.getContentResolver().query(uri, projection, null,
null, null);
column_index_data = cursor.getColumnIndexOrThrow(MediaColumns.DATA);
column_index_date=cursor.getColumnIndex(MediaColumns.DATE_ADDED);
column_index_folder_name = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.BUCKET_DISPLAY_NAME);
while (cursor.moveToNext()) {
absolutePathOfImage = cursor.getString(column_index_data);
System.out.println("Imagepath-->"+absolutePathOfImage);
dateofimage = cursor.getLong(column_index_date);
System.out.println("date--->"+dateofimage);
Date d = new Date(dateofimage);
java.text.DateFormat formatter = new SimpleDateFormat("MMMM dd, yyyy h:mmaa");
String dateString = formatter.format(d);
//String dateString= convertDate(dateofimage,"dd/MM/yyyy hh:mm:ss");
System.out.println("date in format--->"+dateString);
listOfAllImages.add(absolutePathOfImage);
}
return listOfAllImages;
}
请看我发布的logcat below.The 图像路径完美,所以当我尝试将那个毫秒转换为日期格式时 milliseconds.But 中的时间,然后我总是得到:1970 年 1 月 17 日
09-16 11:10:53.994: I/System.out(10098): date in format--->January 17, 1970 8:49PM
09-16 11:10:53.994: I/System.out(10098): Imagepath-->/storage/emulated/0/ModFace/Modface727142626.jpg
09-16 11:10:53.994: I/System.out(10098): date--->1437988950
09-16 11:10:53.994: I/System.out(10098): date in format--->January 17, 1970 8:56PM
09-16 11:10:53.994: I/System.out(10098): Imagepath-->/storage/emulated/0/ModFace/Modface727142639.jpg
09-16 11:10:53.994: I/System.out(10098): date--->1437988950
09-16 11:10:53.994: I/System.out(10098): date in format--->January 17, 1970 8:56PM
09-16 11:10:53.994: I/System.out(10098): Imagepath-->/storage/emulated/0/data/data/images/SILogo2015.png
09-16 11:10:53.994: I/System.out(10098): date--->1438252547
09-16 11:10:53.994: I/System.out(10098): date in format--->January 17, 1970 9:00PM
09-16 11:10:53.994: I/System.out(10098): Imagepath-->/storage/emulated/0/Download/ebook.png
09-16 11:10:53.994: I/System.out(10098): date--->1438668694
09-16 11:10:53.994: I/System.out(10098): date in format--->January 17, 1970 9:07PM
09-16 11:10:53.994: I/System.out(10098): Imagepath-->/storage/emulated/0/DCIM/Camera/20150811_153514.jpg
09-16 11:10:53.994: I/System.out(10098): date--->1439287514
09-16 11:10:53.994: I/System.out(10098): date in format--->January 17, 1970 9:18PM
09-16 11:10:53.994: I/System.out(10098): Imagepath-->/storage/emulated/0/Pictures/mainstreamtemp.jpg
09-16 11:10:53.994: I/System.out(10098): date--->1439800096
09-16 11:10:53.994: I/System.out(10098): date in format--->January 17, 1970 9:26PM
09-16 11:10:53.994: I/System.out(10098): Imagepath-->/storage/emulated/0/Pictures/mainstream2.jpg
09-16 11:10:53.994: I/System.out(10098): date--->1439800096
09-16 11:10:53.994: I/System.out(10098): date in format--->January 17, 1970 9:26PM
09-16 11:10:54.024: I/System.out(10098): date in format--->January 17, 1970 10:01PM
09-16 11:10:54.024: I/System.out(10098): Imagepath-->/storage/emulated/0/shiatoolkitimages/mashlool07.gif
09-16 11:10:54.024: I/System.out(10098): date--->1441888058
09-16 11:10:54.024: I/System.out(10098): date in format--->January 17, 1970 10:01PM
09-16 11:10:54.024: I/System.out(10098): Imagepath-->/storage/emulated/0/shiatoolkitimages/mashlool08.gif
09-16 11:10:54.024: I/System.out(10098): date--->1441888058
09-16 11:10:54.024: I/System.out(10098): date in format--->January 17, 1970 10:01PM
09-16 11:10:54.024: I/System.out(10098): Imagepath-->/storage/emulated/0/shiatoolkitimages/mashlool09.gif
09-16 11:10:54.024: I/System.out(10098): date--->1441888058
09-16 11:10:54.024: I/System.out(10098): Imagepath-->/storage/emulated/0/shiatoolkitimages/mashlool10.gif
09-16 11:10:54.024: I/System.out(10098): date--->1441888058
09-16 11:10:54.024: I/System.out(10098): Imagepath-->/storage/emulated/0/shiatoolkitimages/mashlool11.gif
09-16 11:10:54.024: I/System.out(10098): date in format--->January 17, 1970 10:01PM
09-16 11:10:54.024: I/System.out(10098): Imagepath-->/storage/emulated/0/siat_hadith.png
09-16 11:10:54.024: I/System.out(10098): date--->1442042302
09-16 11:10:54.024: I/System.out(10098): date in format--->January 17, 1970 10:04PM
我也尝试过另一种方法来转换日期的毫秒数,但最终得到了相同的结果:
public static String convertDate(long dateInMilliseconds,String dateFormat) {
return DateFormat.format(dateFormat, dateInMilliseconds).toString();
}
您从光标处获取的数字采用 Unix Time 格式,它计算自 1970 年 1 月 1 日以来经过的秒数。对于您的日期创建,您需要以毫秒为单位的值。简单的解决方案是将结果乘以 1000,就可以开始了。
而不是这个
Date d = new Date(dateofimage);
java.text.DateFormat formatter = new SimpleDateFormat("MMMM dd, yyyy h:mmaa");
String dateString = formatter.format(d);
试试这个
Timestamp timeStamp = new Timestamp(dateofimage * 1000);
String dateString = timeStamp.toLocaleString();
我正在尝试建立一个图库 app.I 已从 MediaStore.Images
获取图像路径和添加日期。
我使用了以下代码:
public static ArrayList<String> getAllShownImagesPath(Activity activity) {
Uri uri;
Cursor cursor;
int column_index_data, column_index_folder_name;
int column_index_date;
ArrayList<String> listOfAllImages = new ArrayList<String>();
String absolutePathOfImage = null;
long dateofimage;
uri = android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
String[] projection = { MediaColumns.DATA,MediaColumns.DATE_ADDED,
MediaStore.Images.Media.BUCKET_DISPLAY_NAME };
cursor = activity.getContentResolver().query(uri, projection, null,
null, null);
column_index_data = cursor.getColumnIndexOrThrow(MediaColumns.DATA);
column_index_date=cursor.getColumnIndex(MediaColumns.DATE_ADDED);
column_index_folder_name = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.BUCKET_DISPLAY_NAME);
while (cursor.moveToNext()) {
absolutePathOfImage = cursor.getString(column_index_data);
System.out.println("Imagepath-->"+absolutePathOfImage);
dateofimage = cursor.getLong(column_index_date);
System.out.println("date--->"+dateofimage);
Date d = new Date(dateofimage);
java.text.DateFormat formatter = new SimpleDateFormat("MMMM dd, yyyy h:mmaa");
String dateString = formatter.format(d);
//String dateString= convertDate(dateofimage,"dd/MM/yyyy hh:mm:ss");
System.out.println("date in format--->"+dateString);
listOfAllImages.add(absolutePathOfImage);
}
return listOfAllImages;
}
请看我发布的logcat below.The 图像路径完美,所以当我尝试将那个毫秒转换为日期格式时 milliseconds.But 中的时间,然后我总是得到:1970 年 1 月 17 日
09-16 11:10:53.994: I/System.out(10098): date in format--->January 17, 1970 8:49PM
09-16 11:10:53.994: I/System.out(10098): Imagepath-->/storage/emulated/0/ModFace/Modface727142626.jpg
09-16 11:10:53.994: I/System.out(10098): date--->1437988950
09-16 11:10:53.994: I/System.out(10098): date in format--->January 17, 1970 8:56PM
09-16 11:10:53.994: I/System.out(10098): Imagepath-->/storage/emulated/0/ModFace/Modface727142639.jpg
09-16 11:10:53.994: I/System.out(10098): date--->1437988950
09-16 11:10:53.994: I/System.out(10098): date in format--->January 17, 1970 8:56PM
09-16 11:10:53.994: I/System.out(10098): Imagepath-->/storage/emulated/0/data/data/images/SILogo2015.png
09-16 11:10:53.994: I/System.out(10098): date--->1438252547
09-16 11:10:53.994: I/System.out(10098): date in format--->January 17, 1970 9:00PM
09-16 11:10:53.994: I/System.out(10098): Imagepath-->/storage/emulated/0/Download/ebook.png
09-16 11:10:53.994: I/System.out(10098): date--->1438668694
09-16 11:10:53.994: I/System.out(10098): date in format--->January 17, 1970 9:07PM
09-16 11:10:53.994: I/System.out(10098): Imagepath-->/storage/emulated/0/DCIM/Camera/20150811_153514.jpg
09-16 11:10:53.994: I/System.out(10098): date--->1439287514
09-16 11:10:53.994: I/System.out(10098): date in format--->January 17, 1970 9:18PM
09-16 11:10:53.994: I/System.out(10098): Imagepath-->/storage/emulated/0/Pictures/mainstreamtemp.jpg
09-16 11:10:53.994: I/System.out(10098): date--->1439800096
09-16 11:10:53.994: I/System.out(10098): date in format--->January 17, 1970 9:26PM
09-16 11:10:53.994: I/System.out(10098): Imagepath-->/storage/emulated/0/Pictures/mainstream2.jpg
09-16 11:10:53.994: I/System.out(10098): date--->1439800096
09-16 11:10:53.994: I/System.out(10098): date in format--->January 17, 1970 9:26PM
09-16 11:10:54.024: I/System.out(10098): date in format--->January 17, 1970 10:01PM
09-16 11:10:54.024: I/System.out(10098): Imagepath-->/storage/emulated/0/shiatoolkitimages/mashlool07.gif
09-16 11:10:54.024: I/System.out(10098): date--->1441888058
09-16 11:10:54.024: I/System.out(10098): date in format--->January 17, 1970 10:01PM
09-16 11:10:54.024: I/System.out(10098): Imagepath-->/storage/emulated/0/shiatoolkitimages/mashlool08.gif
09-16 11:10:54.024: I/System.out(10098): date--->1441888058
09-16 11:10:54.024: I/System.out(10098): date in format--->January 17, 1970 10:01PM
09-16 11:10:54.024: I/System.out(10098): Imagepath-->/storage/emulated/0/shiatoolkitimages/mashlool09.gif
09-16 11:10:54.024: I/System.out(10098): date--->1441888058
09-16 11:10:54.024: I/System.out(10098): Imagepath-->/storage/emulated/0/shiatoolkitimages/mashlool10.gif
09-16 11:10:54.024: I/System.out(10098): date--->1441888058
09-16 11:10:54.024: I/System.out(10098): Imagepath-->/storage/emulated/0/shiatoolkitimages/mashlool11.gif
09-16 11:10:54.024: I/System.out(10098): date in format--->January 17, 1970 10:01PM
09-16 11:10:54.024: I/System.out(10098): Imagepath-->/storage/emulated/0/siat_hadith.png
09-16 11:10:54.024: I/System.out(10098): date--->1442042302
09-16 11:10:54.024: I/System.out(10098): date in format--->January 17, 1970 10:04PM
我也尝试过另一种方法来转换日期的毫秒数,但最终得到了相同的结果:
public static String convertDate(long dateInMilliseconds,String dateFormat) {
return DateFormat.format(dateFormat, dateInMilliseconds).toString();
}
您从光标处获取的数字采用 Unix Time 格式,它计算自 1970 年 1 月 1 日以来经过的秒数。对于您的日期创建,您需要以毫秒为单位的值。简单的解决方案是将结果乘以 1000,就可以开始了。
而不是这个
Date d = new Date(dateofimage);
java.text.DateFormat formatter = new SimpleDateFormat("MMMM dd, yyyy h:mmaa");
String dateString = formatter.format(d);
试试这个
Timestamp timeStamp = new Timestamp(dateofimage * 1000);
String dateString = timeStamp.toLocaleString();