2016-10-24 4 views
0

나는 1970 년 이래로 밀리 초로 시간이있다. 문자열로 변환하여이 "EEEE-yyyy/MM/dd-hh:mm:ss"으로 포맷 한 다음 배열로 분할하고 hh:mm:ss 부분을 구문 분석하려고한다. 날짜, 그래서 내가 cu30 사용 date.compareTo 메서드,하지만 날 unparseable 날짜 예외를 제공합니다.Unparseable date : "10:40:54"(오프셋 0)

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 && dateTempLocal!=null) { 
        if (day.equals(dayLocal) && dateTemp.compareTo(dateTempLocal) > 0) { 
         Log.e("notify", "notify"); 
        } 
       } 
      }else { 

      } 
     } 

     SimpleWakefulReciever.completeWakefulIntent(intent); 
    } 
} 

로그 캣 및 데이터

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 

답변

2

귀하의 형식 문자열이 거짓 로그인합니다. 시간 부분 만 구문 분석하려면 new SimpleDateFormat("hh:mm:ss");이어야합니다.

그래서 코드에서 당신은 당신이 여기에서 볼 수 있듯이 당신의 문자열

+0

서식을위한 시간을 구문 분석 하나는 필요한 경우 (day.equals (dayLocal) && dateTemp.compareTo (dateTempLocal)> 0) {, 난 시간 부분 만 있으면 안된다. – Turbozanik

+0

@Turbozanik'배열로 분할하고 hh : mm : ss 부분을 구문 분석하려고하면, 당신은 당신이 원하는 것을 알 필요가 있습니다 ... – AxelH

+0

때로는 나는 완전히 바보처럼 떨어졌습니다. 고마워. – Turbozanik