获取两个日期之间 '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