2017-08-09 2 views
1

Ich werde einen Benutzer bitten, eine bestimmte Zeit einzugeben: 10 Uhr, 12:30 Uhr, 14:47 Uhr, 1:09 Uhr, 5 Uhr usw. Ich werde eine Scanner verwenden, um die Benutzereingabe zu erhalten. Wie kann ich das String zu einem LocalTime Objekt analysieren/konvertieren? Gibt es eine eingebaute Funktion in Java, die es mir erlaubt, das zu tun?Wie konvertiert man eine bestimmte Zeit (String) in eine lokale Zeit?

+0

Das ist keine 'LocalDateTime', das ist nur eine' LocalTime'. – Kayaman

+0

Ich entschuldige mich. Lass mich das umformulieren. – SVCS1994

Antwort

3

Verwenden Sie einfach ein java.time.format.DateTimeFormatter:

DateTimeFormatter parser = DateTimeFormatter.ofPattern("h[:mm]a"); 
LocalTime localTime = LocalTime.parse("10AM", parser); 

das Muster erklären:

  • h: am/pm Stunde des Tages (von 1 bis 12), mit 1 oder 2 Ziffern
  • []: Trennzeichen für optionalen Abschnitt (alles darin ist optional)
  • :mm: ein : Charakter von Minuten, gefolgt mit zwei Ziffern
  • a: Bezeichner für AM/PM

Dies funktioniert für alle Ihre Eingaben.

+1

Obrigado Hugo. Ich wünschte, ich wäre so schlau wie du. Habt einen schönen Tag! – SVCS1994

+0

Gern geschehen, froh zu helfen! –

0

Hoffe, das wird Ihnen helfen. Ich denke, Sie könnten es mit DateTimeFormatter und LocalDateTime Parsing wie unten Beispiel tun.

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE, MMM d, yyyy HH:mm:ss a"); 

    String date = "Tuesday, Aug 13, 2017 12:10:56 PM"; 
    LocalDateTime localDateTime = LocalDateTime.parse(date, formatter); 
    System.out.println(localDateTime); 
    System.out.println(formatter.format(localDateTime)); 

Ausgabe

2017-08-13T12: 10: 56

Dienstag, 13. August 2017 12.10.56

ähnliche Beiträge wären Java 8 - Trying to convert String to LocalDateTime

0

Wenn Sie nur Zeit analysieren möchten, sollten Sie versuchen, LocalTime zu analysieren. Im Folgenden finden Sie den Code, dies zu implementieren:

DateTimeFormatter parseFormat = new DateTimeFormatterBuilder().appendPattern("hh[:mm]a").toFormatter(); 
LocalTime localTime = LocalTime.parse(timeValue, parseFormat); 
+3

Dies funktioniert nur für die Zeit genau in Bezug auf das Format hh: MMA wie 12:30 Uhr, aber nicht für 5 Uhr oder 2:12 Uhr ... – jeanr

+0

Ja, Sie haben Recht. –

Verwandte Themen