Android如何比较日期?

时间:2015-07-28 13:53:25

标签: android date

我尝试开发一个应用程序,该应用程序在早晨从06:00:0010:00:00以及从13:00:0019:00:00的晚上通过短信发送近距离提醒。我使用以下代码片段来执行该任务,但它从1970年开始返回日期。因此它无法进入循环。 这个你能帮我吗。感谢。

String today = (String) android.text.format.DateFormat.format("kk:mm:ss", new java.util.Date());

    SimpleDateFormat sdf = new SimpleDateFormat("kk:mm:ss");
    String startMorningTime = "06:00:00";
    String endMorningTime="10:00:00";
    String eveningStart="15:00:00";
    String eveningEnd="19:00:00";
    try {
        date1=sdf.parse(startMorningTime);
        date2=sdf.parse(endMorningTime);
        currentTime=sdf.parse(today);
        date3=sdf.parse(eveningStart);
        date4=sdf.parse(eveningEnd);

    } catch (ParseException e) {
        e.printStackTrace();
    }

    if ((date2.before(currentTime)&&date1.after(currentTime))||(date4.before(currentTime)&&date3.after(currentTime))) {

        try {
            databaseHelper = new DatabaseHelper(this);
            db = databaseHelper.getReadableDatabase();

            Cursor cursor = db.rawQuery("select rowid _id,*from latLngTable", null);
            go = cursor.moveToFirst();

            while (cursor.isAfterLast() != true) {
                String strLat = cursor.getString(cursor.getColumnIndex("latitude"));
                String strLng = cursor.getString(cursor.getColumnIndex("longitude"));
                String mobileNo = cursor.getString(cursor.getColumnIndex("Phone_NO"));

                double dLat = Double.parseDouble(strLat);
                double dLng = Double.parseDouble(strLng);
                float radius = 150;

                LocationManager locationManager2 = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
                locationManager2.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
                String proximitys = "com.realtech.latlngrecorder" + n;
                Intent i = new Intent(proximitys);
                i.putExtra("phone", mobileNo);
                sendBroadcast(i);

                PendingIntent pi = PendingIntent.getBroadcast(this, n, i, PendingIntent.FLAG_CANCEL_CURRENT);
                locationManager2.addProximityAlert(dLat, dLng, radius, -1, pi);
                IntentFilter filter = new IntentFilter(proximitys);
                registerReceiver(new ProximityIntentReceiver(), filter);
                Log.w("Alert Added", "Alert Added to All Locations");
                Toast.makeText(MainPage.this, "Proximity Alert Added", Toast.LENGTH_SHORT).show();
                n++;
                cursor.moveToNext();
            }
        } catch (SQLiteException e) {
            e.printStackTrace();
            Toast.makeText(MainPage.this, "Failed to add Proximity Alert", Toast.LENGTH_SHORT).show();
        }
    }
    else {
        Toast.makeText(MainPage.this,"Not Right Time",Toast.LENGTH_SHORT).show();
    }

1 个答案:

答案 0 :(得分:2)

以下代码应该有所帮助。

 private void setTime(Calendar calendar, int hour) {
        calendar.set(Calendar.HOUR_OF_DAY, hour);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
 }

private void test() {
        Calendar morningStart = Calendar.getInstance();
        Calendar morningEnd = Calendar.getInstance();
        setTime(morningStart, 8);
        setTime(morningEnd, 10);

        Calendar eveningStart = Calendar.getInstance();
        Calendar eveningEnd = Calendar.getInstance();

        setTime(eveningStart, 15);
        setTime(eveningEnd, 19);

        Calendar currentTime = Calendar.getInstance();
        if (currentTime.after(morningStart) && currentTime.before(morningEnd)
                || (currentTime.after(eveningStart) && currentTime.before(eveningEnd))) {
            //something
        }
}