获取两个日期之间 'date_added' 的行不起作用
Getting rows with 'date_added' between two dates doesn't work
我想获取最近几周添加的行。
这里是我的实际代码:
private static Cursor makeRecentlyAddedSongsCursor(Context context) {
String[] sProjection = new String[] {MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DATE_ADDED};
String MIN_DATE = String.format("dd/MM/yyyy", new Date().getTime() - ((long) PreferenceUtility.getRecentlyAddedTimespan(context) * 7L * 24L * 60L * 60L * 1000L));
String CURRENT_DATE = String.format("dd/MM/yyyy", new Date().getTime());
String sSelection = MediaStore.Audio.Media.DATE_ADDED + Constants.Database.BETWEEN; //String BETWEEN = " BETWEEN ? AND ?";
String[] sSelectionArgs = {MIN_DATE, CURRENT_DATE};
return context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, sProjection, sSelection, sSelectionArgs, MediaStore.Audio.Media.DATE_ADDED + Constants.Database.SORT_DESCENDING);
}
错误一定是在选择参数中,因为如果我将其保留,所有歌曲都会显示并正确排序。
希望你能帮帮我!
MediaColumns.DATE_ADDED 长格式日期时间。
因此,您无需将日期设置为 'dd/MM/yyyy' 格式。这段代码应该可以完成工作:
Long current = (new Date().getTime())/1000;
String currentDate = current.toString();
否则,要在 'dd/MM/yyyy' 中格式化日期,您应该使用 DateFormat
,例如 SimpleDateFormat
:
String currentDate = new SimpleDateFormat("dd/MM/yyyy").format(new Date());
String.format
允许使用带有 %s、%d、%f 等的 printf 样式格式字符串来格式化字符串...实际上您可以使用它来打印日期:
Calendar c = ...;
String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);
有关 Java 中 printf 样式格式的更多信息,您可以访问此处:
https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax
我想获取最近几周添加的行。
这里是我的实际代码:
private static Cursor makeRecentlyAddedSongsCursor(Context context) {
String[] sProjection = new String[] {MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DATE_ADDED};
String MIN_DATE = String.format("dd/MM/yyyy", new Date().getTime() - ((long) PreferenceUtility.getRecentlyAddedTimespan(context) * 7L * 24L * 60L * 60L * 1000L));
String CURRENT_DATE = String.format("dd/MM/yyyy", new Date().getTime());
String sSelection = MediaStore.Audio.Media.DATE_ADDED + Constants.Database.BETWEEN; //String BETWEEN = " BETWEEN ? AND ?";
String[] sSelectionArgs = {MIN_DATE, CURRENT_DATE};
return context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, sProjection, sSelection, sSelectionArgs, MediaStore.Audio.Media.DATE_ADDED + Constants.Database.SORT_DESCENDING);
}
错误一定是在选择参数中,因为如果我将其保留,所有歌曲都会显示并正确排序。
希望你能帮帮我!
MediaColumns.DATE_ADDED 长格式日期时间。
因此,您无需将日期设置为 'dd/MM/yyyy' 格式。这段代码应该可以完成工作:
Long current = (new Date().getTime())/1000;
String currentDate = current.toString();
否则,要在 'dd/MM/yyyy' 中格式化日期,您应该使用 DateFormat
,例如 SimpleDateFormat
:
String currentDate = new SimpleDateFormat("dd/MM/yyyy").format(new Date());
String.format
允许使用带有 %s、%d、%f 等的 printf 样式格式字符串来格式化字符串...实际上您可以使用它来打印日期:
Calendar c = ...;
String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);
有关 Java 中 printf 样式格式的更多信息,您可以访问此处: https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax