fehler beim datum parsen

student123

Mitglied
hallo zusammen, ich muss im rahmen vom mathestudium ein programm schreiben, dass eine aktie, die als .csv datein hinterlegt ist, aus dem internet ladet, und anschließend diverse kennwerte davon auslesen. das auslesen der datei und abspeichern der elemente in arrayLists funktioniert, nun will ich noch die elemente der arrayList, in der das datum abgespeichert wird, in eine arrayList weiterkopieren, in der diese sich nicht mehr als string sondern als date befinden. ich bekomme jedoch immer eine ParseException:

Java:
package aufgabe21;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

public class googleaktie { 
    
    public ArrayList<Date> date = new ArrayList<>(); 
    public ArrayList<String> d = new ArrayList<>();
    public ArrayList<String> o = new ArrayList<>(); 
    public ArrayList<String> h = new ArrayList<>(); 
    public ArrayList<String> l = new ArrayList<>(); 
    public ArrayList<String> c = new ArrayList<>(); 
    public ArrayList<String> v = new ArrayList<>(); 
    
     
    googleaktie(URL adresse) throws IOException{
           
            InputStreamReader in = new InputStreamReader(adresse.openStream());
            BufferedReader data = new BufferedReader(in);
                    
                    for (String line;(line = data.readLine())!= null;) {
                    String[] teile;
                    teile = line.split(",");
                    d.add(teile[0]);
                    o.add(teile[1]);
                    h.add(teile[2]);
                    l.add(teile[3]);
                    c.add(teile[4]);
                    v.add(teile[5]);    
            }
                    d.remove(0);
                    o.remove(0);
                    h.remove(0);        //Die erste Zeile beschreibt benennt
                    l.remove(0);        //die Tabellenfelder und wird daher 
                    c.remove(0);        //gelöscht.
                    v.remove(0);
                    
                    try {
                        DateFormat df = new SimpleDateFormat("dd-MMM-yy");
                        for (int i = 0; i < d.size(); i++){
                        Date tag = df.parse(d.get(i));
                        date.add(tag);
                    }
                    }catch (ParseException neee){
                        System.out.println("Fehler bei Datumsverarbeitung!");
                    }
                        
    }

wo ist mein fehler? die liste wird eigentlich ordnungsgemäß befüllt, zumindest kann ich die elemente von date richtig ausgeben lassen.

wie kann ich außerdem java dazu bringen, mir die elemente in meinem gewünschten format dd.MMM.yy auszugeben?

Vielen Dank euch schonmal!
 
Lass dir doch die Elemente ausgeben:
Java:
for (int i = 0; i < d.size(); i++){
  System.out.println(i+": "+d.get(i));
  Date tag = df.parse(d.get(i));
  date.add(tag);
}
Und außerdem ich ein einfacher Sysout im catch-Block nur bedingt sinnvoll, da du alle hilfreichen Informationen wegschmeißt. nach wenigstens
Code:
ex.printStackTrace
 
danke dir, ich benötige die elemente jedoch als datum gespeichert in irgendeiner art von liste, da ich später bei meinen methoden darauf zugreifen will. daher wollte ich sowohl die verschiedenen kursnennwert (höchstwert, closewert etc) als auch das zugehörige datum in listen so abspeichern, dass sie über ihren index zusammenhängend sind, d.h. dass ich bei einer rückgabe quasi aus den verschiedenen relevanten listen jeweils das element mit bestimmten index herausnehm.
 
Er meint ja nur
Code:
println
um zu sehen wie der Wert ist. (Nicht als Ergebnis deines Programmes!)
dann wirst du erkennen, warum der parse nicht funktioniert!

Java:
for (String myD:d){
  System.out.println(myD);  // dann werden wir wohl erkennen, was parse erhält, und warum's nicht geht! 
  Date tag = df.parse(myD);
  date.add(tag);
}
 
Zuletzt bearbeitet:
ok, ich habs. das problem war, dass die monatsnamen ab den daten von mai mit "MAY", also auf englisch, abgekürzt waren. ich muss also bei meinem dateformat noch Locale.ENGLISH hinzufügen.

danke euch beiden für die hilfe!
 
Schön, dass du's gelöst hast.
ein println wirkt manchmal Wunder! 🙂

War zu vermuten, dass das Format Probleme macht. Ist in allen Sprachen und Programmen das selbe Problem ...
Obwohl ich nicht verstehe, was der Monatsname mit dem Tag zu tun hat.
(Ist aber unwichtig.)

So schön könnten wir's haben, wenn Napolen den Krieg gewonnen hätte:
Der hatt eine Kalenderreform eingeführt, in der Dekaden/Tag/Stunden/Minuten ... alles dezimal geregelt war!
Wir hätten hunderte Umwandlungsprobleme nicht, und alle Formeln, die mit Zeit zu tun haben wären viel einfacher!

Ich find, wir sollten es nochmal wagen! Auf geht's!
 

Neue Themen


Zurück
Oben