2017-08-09 994 views
1

我會要求用戶輸入特定的時間:上午10點,下午12點30分,下午2點47分,上午1點09分,下午5點等。 我將使用Scanner來獲取用戶的輸入。如何將給定的時間(字符串)轉換爲LocalTime?

如何解析/將String轉換爲LocalTime對象? Java中有沒有內置函數可以讓我這樣做?

+0

這不是'LocalDateTime',那只是一個'LocalTime'。 – Kayaman

+0

我很抱歉。讓我重述一下。 – SVCS1994

回答

3

只需使用一個java.time.format.DateTimeFormatter

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

解釋模式:

  • h:早上天/ PM小時(從1到12 ),用1或2位數字
  • []:可選部分的分隔符(其內的所有內容都是可選的)
  • :mm:一個:字符後跟分鐘2個位數
  • a:代號爲AM/PM

這適用於所有的輸入。

+1

Obrigado Hugo。希望我和你一樣聰明。有一個美好的一天 – SVCS1994

+0

不客氣,很高興幫助! – 2017-08-09 16:33:00

0

希望這會對你有所幫助。我認爲你可以使用DateTimeFormatterLocalDateTime解析,如下面的例子。

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)); 

輸出

2017-08-13T12:10:56

週二,2017年8月13日下午12點十分56秒

類似帖子會Java 8 - Trying to convert String to LocalDateTime

0

如果你只想解析時間,你應該嘗試解析到LocalTime。以下是代碼來實現這一點:

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

這隻適用於時間準確的尊重格式hh:mma,如12:30 AM,但不適用於上午5:00或下午2:12 ... – jeanr

+0

是的,你是對的。 –

相關問題