Неразрешимая дата: «10:40:54» (со смещением 0)

#android #date #time #android-date

#Android #Дата #время #android-дата

Вопрос:

У меня есть время в миллисекундах с 1970 года, я конвертирую его в строку, отформатированную следующим образом "EEEE-yyyy/MM/dd-hh:mm:ss" , затем разбиваю его на массив и пытаюсь разобрать hh:mm:ss часть на дату, поэтому я не могу использовать date.compareTo метод, но он выдает мне исключение с неразличимой датой.

 public class NotificationWakefulIntentService extends IntentService {

    public NotificationWakefulIntentService() {
        super("NotificationWakefulIntentService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        Log.d("time",(System.currentTimeMillis()/1000) "");

        Date dateTemp = null;
        Date dateTempLocal = null;
        List<Action> actionList = Action.listAll(Action.class);



        for (Action act: actionList){
            if (act.isRepeating()){
                SimpleDateFormat formatter = new SimpleDateFormat("EEEE-yyyy/MM/dd-hh:mm:ss", Locale.getDefault());
                String asString = formatter.format(act.getDate());
                String[] parsedDate = asString.split("-");
                Log.e("time", asString);

                String time = parsedDate[2];
                //String date = parsedDate[1];
                String day = parsedDate[0];

                String asStringLocal = formatter.format(System.currentTimeMillis());
                String[] parsedDateLocal = asStringLocal.split("-");

                String timeLocal = parsedDateLocal[2];
                //String dateLocal = parsedDateLocal[1];
                String dayLocal = parsedDateLocal[0];

                try {
                    dateTemp = formatter.parse(time);
                    dateTempLocal = formatter.parse(timeLocal);
                    Log.e("dateEquality", (dateTemp.compareTo(dateTempLocal)) "");
                } catch (ParseException e) {
                    e.printStackTrace();
                }

                if (dateTemp!=null amp;amp; dateTempLocal!=null) {
                    if (day.equals(dayLocal) amp;amp; dateTemp.compareTo(dateTempLocal) > 0) {
                        Log.e("notify", "notify");
                    }
                }
            }else {

            }
        }

        SimpleWakefulReciever.completeWakefulIntent(intent);
    }
}
  

LogCat и журнал данных

 E/time: понедельник-2016/10/24-10:40:54
10-24 09:27:01.265 2655-3291/by.mtz.reminder W/System.err: java.text.ParseException: Unparseable date: "10:40:54" (at offset 0)
10-24 09:27:01.265 2655-3291/by.mtz.reminder W/System.err:     at java.text.DateFormat.parse(DateFormat.java:626)
10-24 09:27:01.265 2655-3291/by.mtz.reminder W/System.err:     at by.mtz.reminder.wakefulService.NotificationWakefulIntentService.onHandleIntent(NotificationWakefulIntentService.java:58)
10-24 09:27:01.265 2655-3291/by.mtz.reminder W/System.err:     at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
10-24 09:27:01.265 2655-3291/by.mtz.reminder W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:99)
10-24 09:27:01.265 2655-3291/by.mtz.reminder W/System.err:     at android.os.Looper.loop(Looper.java:137)
10-24 09:27:01.265 2655-3291/by.mtz.reminder W/System.err:     at android.os.HandlerThread.run(HandlerThread.java:60)
10-24 09:27:06.805 2655-3407/by.mtz.reminder D/time: 1477290426
  

Ответ №1:

Ваша строка формата false. Это должно быть: new SimpleDateFormat("hh:mm:ss"); только для анализа временной части.

Итак, в вашем коде вам нужен один для анализа времени и один для форматирования вашей строки

Комментарии:

1. Как вы можете видеть здесь, если (day.equals(dayLocal) amp;amp; dateTemp.compareTo(dateTempLocal) > 0) { , мне нужна не только временная часть.

2. @Turbozanik then split it to array, and trying to parse hh:mm:ss part to date , тебе нужно знать, чего ты хочешь…