J'ai une base de données SQLite dans Android où la date d'un événement spécifique est enregistrée comme String
. J'ai obtenu le Date
par un DatePickerDialog
.SimpleDateFormat Chaîne au jour de la semaine
Mes événements sont affichés dans un ListView
et pour cela, je veux les commander par date et obtenir le jour de la semaine de String
.
Je sais que je dois convertir mon String
en SimpleDateFormat
puis obtenir le jour et rendre l'événement comparable. Mais tout ce que je reçois est un ParseException
.
C'est String
insérer dans ma base de données:
private void handleDateDialog() {
setDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog = new DatePickerDialog(CreateEvent.this,android.R.style.Theme_Holo_Light_Dialog_MinWidth,dateSetListener,year,month,day);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show();
}
});
dateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day) {
month += 1;
String input = day + "-" + month + "-" + year;
dateSelected.setText(input);
}
};
}
C'est ce que je suis de débordement de pile en lisant d'autres questions:
public String getDayOfWeek(){
String eventDate = this.getDate();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
try {
Date myDate = dateFormat.parse(eventDate);
} catch (ParseException e) {
e.printStackTrace();
}
dateFormat.applyPattern("EE");
String dayofweek = dateFormat.format(date);
return dayofweek;
}
Et voilà comment j'essaie d'obtenir le nouveau String
dayOfWeek dans mon ListView
:
try {
holder.day_of_week.setText(individualEvent.getDayOfWeek());
} catch (Exception e) {
e.printStackTrace();
}
Mais je reçois toujours cette erreur dans Android Moniteur:
java.lang.IllegalArgumentException: Impossible de formater l'objet donné comme date
Donc, je suppose que je l'ai fait quelque chose de mal dans ma base de données.
Quand montrer ma date String
il montre comme ceci: 28-10-2017
Je ne sais pas pourquoi ce n'est pas formaté.
Intéressé pour voir ce que 'String eventDate = this .getDate(); 'ceci retourne. Je veux dire quel est le format que vous enregistrez dans la base de données? Vous avez mentionné "28.10.2017" et "28-10-2017" dans votre sélecteur de dialogue. Lequel est-ce? Déboguer et découvrir. – Vucko
Le message * "Impossible de formater un objet donné en tant que date" * se produit généralement parce que la méthode 'SimpleDateFormat # format' nécessite un paramètre' java.util.Date' et que vous lui transmettez probablement un autre type. Dans 'dateFormat.format (date)', où cette variable 'date' est-elle définie? Vous devriez passer 'myDate' à la place. –
Oh ouais j'ai fait une faute de frappe dans la question. Bien sûr, il retourne la date comme ceci: 28-10-2017 – stoesselleon