2016-04-25 10 views
0

Ich habe eine Zeichenfolge im Datumsformat, das ich in Datumsobjekt analysieren möchte. Ich möchte die Uhrzeit als Zeichenfolge im Kalenderobjekt festlegen und gleichzeitig eine Warnung festlegen.Datum Zeichenfolge Dosis nicht erhalten

Dafür habe ich versucht, die Zeichenfolge in Datum zu analysieren, aber nichts passiert. Die Zeitdosis wird nicht eingestellt.

Wenn ich debugging, um zu prüfen, ob die Zeit im Kalender oder nicht gesetzt ist, dann fand, dass es direkt nach der Analyse am Ende der Methode geht.

Date date = df.parse(alertDateTest);

Ich habe versucht, die Zeichenfolge mit diesem Format zu analysieren:
SimpleDateFormat df = new SimpleDateFormat("d MMM yyyy");

Aber es gibt ungültiges Format Ausnahme. Welches Format sollte ich verwenden, um diese Zeichenfolge zu analysieren?

String-Format ist: d MMM yyyy

Code:

mAlertDate ist 25. April 2016 alertDateTest 25. April 2016 ist

public void updateNotification() { 

     try { 


      String alertDateTest = i.getStringExtra("taskAlertDate"); 
      String alertTimeTest = i.getStringExtra("taskAlertTime"); 

      SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 

      Date date = df.parse(alertDateTest); 


      if (alertDateTest.equals(mAlertDate)) { 


       String formattedString = date.toString(); 
       Calendar c = Calendar.getInstance(); 

       c.set(Calendar.HOUR_OF_DAY, mHourOfTheDay); 
       c.set(Calendar.MINUTE, mMinute); 
       c.set(Calendar.SECOND, 0); 

       mYear = new DateTime(formattedString).getYear(); 
       mMonth = new DateTime(formattedString).getMonthOfYear(); 
       mDayOfMonth = new DateTime(formattedString).getDayOfMonth(); 

       c.set(Calendar.YEAR, mYear); 
       c.set(Calendar.MONTH, mMonth); 
       c.set(Calendar.DAY_OF_MONTH, mDayOfMonth); 

       date = c.getTime(); 

       Log.d("AlertDate", String.valueOf(date)); 
       Toast.makeText(AddTaskActivity.this, String.valueOf(date), Toast.LENGTH_SHORT).show(); 

       intent = new Intent(AddTaskActivity.this, NotificationReceiver.class); 
       pendingIntent = PendingIntent.getBroadcast(getBaseContext(), _mId, intent, 0); 
       alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
       alarmManager.set(AlarmManager.RTC_WAKEUP, date.getTime(), pendingIntent); 


     } catch (ParseException e) { 

     } 
    } 

EDIT:

Ich habe eine Funktion onDateSet von Datum Picker in diesem Ich habe ein String-Format und die Zeichenfolge ist im gleichen Format formatiert:

@Override 
    public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) { 
    // String date = "You picked the following date: "+dayOfMonth+"/"+(++monthOfYear)+"/"+year; 

     SimpleDateFormat df = new SimpleDateFormat("d MMM yyyy"); 
     mCalendar = Calendar.getInstance(); 
     mCalendar.set(Calendar.YEAR, year); 
     mCalendar.set(Calendar.MONTH, monthOfYear); 
     mCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); 

     Date date = mCalendar.getTime(); 



     if(DATE_PICKER_TAG == 1) 
     { 
      mYear = year; 
      mMonth = monthOfYear; 
      mDayOfMonth = dayOfMonth; 

      mAlertDate = df.format(date); 
      alertDate.setText(String.valueOf(mAlertDate)); 
     } 
     if(DATE_PICKER_TAG == 3) { 

      mDueDate = df.format(date); 
      dueDate.setText(String.valueOf(mDueDate)); 
     } 
    } 

EDIT: Versuchte durch Ihre Antwort Umesh Saraswat

  String alertDateTest = i.getStringExtra("taskAlertDate"); 
      String alertTimeTest = i.getStringExtra("taskAlertTime"); 

      SimpleDateFormat simpleDateFormate = new SimpleDateFormat("dd MMM yyyy"); 

      Date date = simpleDateFormate.parse(alertDateTest); 

      // Date date = df.parse(alertDateTest); 


      if (alertDateTest.equals(mAlertDate)) { 


       String formattedString = date.toString(); 
       Calendar c = Calendar.getInstance(); 

       c.set(Calendar.HOUR_OF_DAY, mHourOfTheDay); 
       c.set(Calendar.MINUTE, mMinute); 
       c.set(Calendar.SECOND, 0); 

       c.setTime(date); 



       c.set(Calendar.YEAR, mYear); 
       c.set(Calendar.MONTH, mMonth); 
       c.set(Calendar.DAY_OF_MONTH, mDayOfMonth); 

       date = c.getTime(); 

Das Datum i Dezember 31 wed bekam ist 26. April String wurde 2016. Zeit nicht fertig.

Danke ..

+0

für '25. April 2016' Verwendung' dd yyyy' Format MMM. –

+0

'd MMM yyyy' angenommen, wie dieser' dd MMM yyyy' zu sein – Bharatesh

Antwort

1

bis Datum String mit 25 Apr 2016 Verwendung dd MMM yyyy String-Format zu analysieren.

Für weitere Informationen besuchen, SimpleDateFormat

+0

sein Geben eine Ausnahme. java.lang.IllegalArgumentException: Ungültiges Format: "Mon Apr 25 00:00:00 EDT 2016" 04-25 18: 49: 33.123 3135-3135/com.beispiel.siddhi.googletaskmanager E/AndroidRuntime: at org.joda. time.format.DateTimeParserBucket.doParseMillis (DateTimeParserBucket.java:187) @Dhaval Patel – Sid

+0

So ist Ihr Datum String "Mon Apr 25 00:00:00 EDT 2016" nicht "25 Apr 2016". –

+0

Versuchen Sie "EEE MMM TT HH: mm: ss zzz yyyy" –

1

Sie entweder "dd MMM yyyy" oder "d MMM yyyy"

+0

Ich versuchte mit "dd MMM JJJJ" dies für String in OnDateset-Methode sowie in UpdateNotification-Methode. Aber es gibt eine Ausnahme. java.lang.IllegalArgumentException: Ungültiges Format: "Di Apr 26 00:00:00 EDT 2016" ist bei "ue Apr 26 00:00:00 EDT 2016" falsch @PankajVashishta – Sid

1

wie ich Ihre Frage,

haben einen String verstanden haben, verwenden können im Datumsformat, das ich im Datumsobjekt analysieren möchte. Für diese erste tou müssen das String Datum in Datum Format

SimpleDateFormate simpleDateFormate = new SimpleDateFormate("dd MMM yyyy"); 
Date date = simpleDateFormate.parse("Your date"); 

ich einstellen will, die Zeit als String in Kalenderobjekt analysieren und will einen Alarm zur gleichen Zeit einzustellen.

Calendar c = Calendar.getInstance(); 
calendar.setTime(date) 
c.set(Calendar.HOUR_OF_DAY, mHourOfTheDay); 
c.set(Calendar.MINUTE, mMinute); 
c.set(Calendar.SECOND, 0); 

;

Wenn Sie Kalender Objekt Datum in einen String Format verwenden möchten, dann

SimpleDateFormate simpleDateFormate = new SimpleDateFormate("Your Date format String"); 

String date = simpleDateFormat.format(c.getTime); 
+0

haben Sie versucht, aber die Zeit wurde nicht eingestellt, bitte überprüfen bearbeitete Frage @ Umesh Saraswat – Sid

0

hinzugefügt Nur Locale auf das Format und es funktionierte ..

Simple simpleDateFormate = new Simple ("dd MMM yyyy" , Locale.ENGLISH);

Vielen Dank ..