# JSpinner getValue() Problem



## Steven85 (31. Jul 2012)

Hallo zusammen,

ich habe in einem Frame mit einen JSpinner gebaut welcher mit der Methode spinner.getValue() ein Object mit einem Date zurück gibt.

Mit der Methode spinner.getValue().toString() bekomme ich "Thu Jan 01 00:01:00 CET 1970".

Was ich jetzt möchte ist einfach eine Art Datums Format mit dem ich auch die Zeit auslesen kann oder z.B. nur den Tag.

Sinn der Sache ist die Minuten und Sekundenausgabe mittels eines JSpinners.


```
final JSpinner spinLaenge = new JSpinner();
spinLaenge.setModel(new javax.swing.SpinnerDateModel());
spinLaenge.setEditor(new javax.swing.JSpinner.DateEditor(spinLaenge, "mm:ss"));
Calendar cal = GregorianCalendar.getInstance();
cal.set(GregorianCalendar.MINUTE, 0);
cal.set(GregorianCalendar.SECOND, 0);
spinLaenge.setValue(cal.getTime()); // Um den Spinner auf 0 zu setzen
```


----------



## Michael... (1. Aug 2012)

Und das genaue Problem ist? Wo hängt's? Das Object in eine Date zu casten?


----------



## mla.rue (1. Aug 2012)

Um ehrlich zu sein hätte ich auch so meine Probleme das anständig zu parsen, der Aufwand nur um mm:ss auszulesen erscheint mir zu Umständlich, da würde ich doch lieber den String zerlegen (nach erstem : 2 zeichen auslesen, nach dem letzten : 2 zeichen auslesen und ich habe meine zwei int werte für Minuten und Sekunden). Mit rumparsen mit Date sähe es bei mir so aus:


```
try {
    String strDate = spSpinner.getValue().toString();
    System.out.println("spSpinner.getValue(): " + strDate);
    //spSpinner.getValue(): Wed Aug 01 09:52:31 CEST 2012
    DateFormat formatter;
    Date date;
    formatter = new SimpleDateFormat("E MMMM dd HH:mm:ss Z yyyy", Locale.ENGLISH);
    date = (Date) formatter.parse(strDate);
    System.out.println("SimpleDateFormat parse: " + date);
    //SimpleDateFormat parse: Wed Aug 01 09:52:31 CEST 2012
    SimpleDateFormat sdf = new SimpleDateFormat("mm:ss");
    StringBuilder sbTmp = new StringBuilder(sdf.format(date));
    System.out.println("SimpleDateFormat mm:ss: " + sbTmp);
    //SimpleDateFormat mm:ss: 52:31
} catch (ParseException e) {
    System.out.println("Exception: " + e);
}
```

vermutlich denke ich aber um zuviele Ecken


----------



## Michael... (1. Aug 2012)

mla.rue hat gesagt.:


> ```
> String strDate = spSpinner.getValue().toString();
> ```
> 
> vermutlich denke ich aber um zuviele Ecken


Warum sich mit eine String abmühen? Der Spinner liefert doch ein Date Objekt.

... und warum der StringBuilder um da einen einzelnen String reinzustecken?


----------



## mla.rue (1. Aug 2012)

sag ja, denke wohl um zuviele Ecken 


```
date = (Date) spSpinner.getValue();
    SimpleDateFormat sdf = new SimpleDateFormat("mm:ss");
    String strTmp2 = sdf.format(date);
    System.out.println("SimpleDateFormat mm:ss: " + strTmp2);
```


oder gehts noch einfacher?


----------



## Steven85 (1. Aug 2012)

Bei dieser Variante,


```
Date date = (Date) spinLaenge.getValue();
SimpleDateFormat sdf = new SimpleDateFormat("mm:ss");
String strTmp2 = sdf.format(date);
```

bekomme ich bei, 


```
Date date = (Date) spinLaenge.getValue();
```

eine ClassCastException.

Ansonsten ist das schon richtig. Ich will nur an die "mm:ss" ran.


----------



## Michael... (1. Aug 2012)

mla.rue hat gesagt.:


> oder gehts noch einfacher?


einfacher wohl nicht, aber ist das was der Thread Ersteller haben will? Deshalb ja meine Frage.


----------



## SlaterB (1. Aug 2012)

zur ClassCastException fällt mir nur falscher Import java.sql.Date als Fehlerquelle ein


----------



## Michael... (1. Aug 2012)

mla.rue hat gesagt.:


> bekomme ich bei,
> 
> 
> ```
> ...


Die wie genau lautet?

Vermutlich verwendest Du die falsche Klasse Date?


----------



## Steven85 (1. Aug 2012)

Der import Fehler war es. 

Statt java.sql.Date muss es java.util.Date sein.

Vielen Dank, Problem wurde gelöst.


----------

