2017-02-23 51 views
1

我想获取在过去几周内添加的行。在两个日期之间获取'date_added'的行不起作用

这里我的实际代码:

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); 
} 

误差必须在选择的说法,因为如果我离开它了,显示所有歌曲,正确排序。

我希望你能帮助我!

回答

0

长格式的MediaColumns.DATE_ADDED日期时间。

因此,您不需要以'dd/MM/yyyy'格式设置日期的格式。此代码应做的工作:

Long current = (new Date().getTime())/1000; 
String currentDate = current.toString(); 

否则,格式化 'DD/MM/YYYY' 的日期,你应该使用DateFormatSimpleDateFormat

String currentDate = new SimpleDateFormat("dd/MM/yyyy").format(new Date()); 

String.format允许格式的字符串使用printf风格的格式字符串与%s,%d,%F,等等......其实你可以用它来打印日期:

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

+0

完全不 –

+0

由于工作的确,在DATE_ADDED格式...这是一个漫长的。我已经更新了我的答案 –

相关问题