PDA

View Full Version : فیلتر کردن بر اساس تاریخ میلادی



ghasem110deh
چهارشنبه 08 شهریور 1396, 23:21 عصر
سلام به همه :-)
دوستان من توی دیتابیس SQLite اطلاعات رو با تاریخ ذخیره میکنم

این تاریخ :


Calendar calendar = GregorianCalendar.getInstance();
DateFormat SEARCH_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
SEARCH_DATE = SEARCH_FORMAT.format(calendar.getTime());
اینم واسه گرفتم ماه و سال واسه (strftime)

Calendar calendar = GregorianCalendar.getInstance();
DateFormat YEAR_FORMAT = new SimpleDateFormat("yyyy");
DateFormat MONTH_FORMAT = new SimpleDateFormat("MM");
YEAR_DATE = YEAR_FORMAT.format(calendar.getTime());
MONTH_DATE = MONTH_FORMAT.format(calendar.getTime());
و با این کوئری ها دارم بر اساس سال و ماه فیلتر میکنم :


public List<Moment> MOMENT_YEAR(String year) {
try {
Moment MOMENT_TABLE;
List<Moment> MOMENTS = new ArrayList<>();
DB_HELPER.openDatabase();
db.beginTransaction();
Cursor MOMENT_CURSOR = db.rawQuery("SELECT * FROM tblMoment WHERE strftime('%Y', searchDate) =?", new String[]{year}, null);
db.setTransactionSuccessful();
MOMENT_CURSOR.moveToFirst();
while (!MOMENT_CURSOR.isAfterLast()) {
MOMENT_TABLE = new Moment(MOMENT_CURSOR.getInt(0), MOMENT_CURSOR.getString(1), MOMENT_CURSOR.getString(2), MOMENT_CURSOR.getString(3),
MOMENT_CURSOR.getString(4), MOMENT_CURSOR.getString(5), MOMENT_CURSOR.getInt(6), MOMENT_CURSOR.getInt(7) != 0);
MOMENTS.add(MOMENT_TABLE);
MOMENT_CURSOR.moveToNext();
}
MOMENT_CURSOR.close();
return MOMENTS;
} catch (Exception e) {
return null;
} finally {
db.endTransaction();
DB_HELPER.closeDatabase();
}
}

public List<Moment> MOMENT_MONTH(String month) {
try {
Moment MOMENT_TABLE;
List<Moment> MOMENTS = new ArrayList<>();
DB_HELPER.openDatabase();
db.beginTransaction();
Cursor MOMENT_CURSOR = db.rawQuery("SELECT * FROM tblMoment WHERE strftime('%m', searchDate) =?", new String[]{month}, null);
db.setTransactionSuccessful();
MOMENT_CURSOR.moveToFirst();
while (!MOMENT_CURSOR.isAfterLast()) {
MOMENT_TABLE = new Moment(MOMENT_CURSOR.getInt(0), MOMENT_CURSOR.getString(1), MOMENT_CURSOR.getString(2), MOMENT_CURSOR.getString(3),
MOMENT_CURSOR.getString(4), MOMENT_CURSOR.getString(5), MOMENT_CURSOR.getInt(6), MOMENT_CURSOR.getInt(7) != 0);
MOMENTS.add(MOMENT_TABLE);
MOMENT_CURSOR.moveToNext();
}
MOMENT_CURSOR.close();
return MOMENTS;
} catch (Exception e) {
return null;
} finally {
db.endTransaction();
DB_HELPER.closeDatabase();
}
}
توی ایمولیتور فیلتر انجام میشه ... ولی توی گوشی نه ! (منوی گوشی فارسی هست)
در واقع فارسی رو پشتیبانی میکنه، (روت نشده) ممکنه بخاطر اون باشه
و اگه ایراد از کده چرا توی ایمولیتور درست کار میکنه :متفکر:

ghasem110deh
پنج شنبه 09 شهریور 1396, 10:20 صبح
دوستان یکی ما رو help me :لبخند:

ghasem110deh
پنج شنبه 09 شهریور 1396, 20:40 عصر
دوستان مشکل همون بود که حدس زدم !
روی یه گوشی با منوی انگلیسی نصب کردم ... بدون مشکل کار می کنه؛ راه حل یا پیشنهادی ندارین
معمولا کاربرای ایرانی منوهاشون رو فارسی میکنین

opinions
پنج شنبه 09 شهریور 1396, 20:58 عصر
دوستان مشکل همون بود که حدس زدم !
روی یه گوشی با منوی انگلیسی نصب کردم ... بدون مشکل کار می کنه؛ راه حل یا پیشنهادی ندارین
معمولا کاربرای ایرانی منوهاشون رو فارسی میکنین

داداش موقع گرفتن تاریخ از این فرمت استفاده کن که در منوی فارسی، عربی، انگلیسی و غیره مشکل نداشته باشی، فکر کنم مشکلت برطرف میشه، توی یه برنامه همچین مشکلی داشتم، اینطوری حل شد:

new SimpleDateFormat("yyyy", Locale.ENGLISH).format(new Date());

ghasem110deh
جمعه 10 شهریور 1396, 16:54 عصر
داداش موقع گرفتن تاریخ از این فرمت استفاده کن که در منوی فارسی، عربی، انگلیسی و غیره مشکل نداشته باشی، فکر کنم مشکلت برطرف میشه، توی یه برنامه همچین مشکلی داشتم، اینطوری حل شد:

new SimpleDateFormat("yyyy", Locale.ENGLISH).format(new Date());


خیلی ممنون ... حل شد
اینجاس که میگن دود از کنده بلند میشه ! (تاریخ عضویت : آبان 1387)