# Zeitformat ändern



## remi (9. Okt 2017)

Hallo,

ich möchte einen String mit einer Zeitangabe wie "8:20 PM" oder "1:20 AM" in eine deutsche Uhrzeit umwandeln wie "20:20" oder "01:20". Ich habe viel versucht, aber war nicht erfolgreich.
Könnte mir jemand helfen, vielleicht sogar mit einem Beispiel?

Hans-Jürgen


----------



## Flown (9. Okt 2017)

Was hast du denn versucht?


----------



## VfL_Freak (9. Okt 2017)

Moin,


remi hat gesagt.:


> Ich habe viel versucht


und warum postest Du Deinen Ansatz nicht?
Eine fertige Lösung wirst Du hier nicht bekommen!!

VG Klaus


----------



## remi (9. Okt 2017)

Ich habe z.B. folgendes versucht:

```
String sZeit = new SimpleDateFormat("HH:mm").format(new SimpleDateFormat("h:mm a").parse(alleAktienDatenArray[i][6], new ParsePosition(0)));
```
oder auch:

```
String dateString = "8:10:56 PM";
final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm a");
Date d = sdf.parse(dateString, new ParsePosition(0));
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
String neuDatum = sdf.format(d);
```
oder:

```
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm a");
String dateInString = "8:10:56 PM";
try {
    Date date = formatter.parse(dateInString,new ParsePosition(0));
    sZeit = formatter.format(date);
} catch (Exception e) {
    e.printStackTrace();
}
```


----------



## Flown (9. Okt 2017)

Bitte Code in Code-Tags setzen: [code=java]//JAVA CODE HERE[/code]


----------



## mrBrown (9. Okt 2017)

remi hat gesagt.:


> ```
> String dateString = "8:10:56 PM";
> ```





remi hat gesagt.:


> ```
> new SimpleDateFormat("HH:mm a");
> ```



Vergleich doch mal dein Pattern mit der Zeitangabe...


----------



## Flown (9. Okt 2017)

Also dein Pattern müsste anders lauten und du müsstest auf Locale.US umsteigen (oder irgendein anderes englischsprachiges Locale - sonst werden bei Deutsch: vorm. und nachm. geparst)


----------



## mrBrown (9. Okt 2017)

Flown hat gesagt.:


> du müsstest auf Locale.US umsteigen (oder irgendein anderes englischsprachiges Locale - sonst werden bei Deutsch: vorm. und nachm. geparst)


Sicher? Auch mit Locale.Germany parsed er das korrekt und formatiert es mit "PM"


----------



## Flown (9. Okt 2017)

mrBrown hat gesagt.:


> Sicher? Auch mit Locale.Germany parsed er das korrekt und formatiert es mit "PM"


Ahja mal wieder nicht richtig gelesen. Ich hab das mit DateTimeFormatter geparsed! BTW: Du hast gerade die Lösung gepostet!


----------



## mrBrown (9. Okt 2017)

Flown hat gesagt.:


> Ahja mal wieder nicht richtig gelesen. Ich hab das mit DateTimeFormatter geparsed!


Hm, ist wohl mit Java 9 gekommen.
Java 8 kennt kein nachm./vorm., Java 9 schon.


----------



## Flown (9. Okt 2017)

http://openjdk.java.net/jeps/252


----------



## remi (30. Okt 2017)

Hallo,
ich habe jetzt endlich die Lösung gefunden und poste sie einfach mal direkt hier:


```
//
string uhrzeit = new SimpleDateFormat("HH:mm:ss").format(new SimpleDateFormat("h:mma").parse(alleAktienDatenArray[i][6], new ParsePosition(0)));
```


----------



## mrBrown (30. Okt 2017)

Deine Beispieldaten sind damit aber nicht parsebar...


----------



## remi (30. Okt 2017)

Die Originaldaten haben keine Leerstelle vor am oder pm und dann gehts


----------



## mrBrown (30. Okt 2017)

Und offenbar auch keine Sekundenstelle?


----------



## remi (30. Okt 2017)

Nein, auch nicht. Hoffe, daß das Format auch so bleibt...


----------



## mrBrown (30. Okt 2017)

Hm, das nächste mal, wenns um Formatierung geht, wäre als Beispiel das richtige Format ganz nützlich...


----------



## remi (30. Okt 2017)

Die Funktionen aus meinem ersten angeführten Versuch waren ja richtig, es war nur eine Leerstelle zu viel


----------



## mrBrown (30. Okt 2017)

Eben - und wir hätten dir da nicht helfen können, weil die Beispiele alle eine Leerstelle hatten


----------

