2016-10-24 4 views
0

私は1970年以来ミリ秒単位の時間を持っていますが、これを"EEEE-yyyy/MM/dd-hh:mm:ss"という形式の文字列に変換してから配列に分割し、hh:mm:ss部分を解析しようとしています。日付、だから私はdate.compareToメソッドを使用してcuold、それは私に解読不能な例外を与える。解読不可能な日付: "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); 
    } 
} 

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 

答えて

2

あなたのフォーマット文字列はfalseです。時間部分のみを解析するには、new SimpleDateFormat("hh:mm:ss");にする必要があります。

は、だからあなたのコードで、あなたがここに見ることができるようにあなたの文字列

+0

をフォーマットするための時間を解析するための1つずつを必要とする場合(day.equals(dayLocal)&& dateTemp.compareTo(dateTempLocal)> 0){、I時間の部分だけでなく、 – Turbozanik

+0

@Turbozanik 'それを配列に分割し、hh:mm:ssの部分を解析すると、あなたが望むものを知る必要があります... – AxelH

+0

時々私は総馬鹿のようになりました。ありがとう。 – Turbozanik

関連する問題