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 ..
für '25. April 2016' Verwendung' dd yyyy' Format MMM. –
'd MMM yyyy' angenommen, wie dieser' dd MMM yyyy' zu sein – Bharatesh