我會要求用戶輸入特定的時間:上午10點,下午12點30分,下午2點47分,上午1點09分,下午5點等。 我將使用Scanner
來獲取用戶的輸入。如何將給定的時間(字符串)轉換爲LocalTime?
如何解析/將String
轉換爲LocalTime
對象? Java中有沒有內置函數可以讓我這樣做?
我會要求用戶輸入特定的時間:上午10點,下午12點30分,下午2點47分,上午1點09分,下午5點等。 我將使用Scanner
來獲取用戶的輸入。如何將給定的時間(字符串)轉換爲LocalTime?
如何解析/將String
轉換爲LocalTime
對象? Java中有沒有內置函數可以讓我這樣做?
只需使用一個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這適用於所有的輸入。
Obrigado Hugo。希望我和你一樣聰明。有一個美好的一天 – SVCS1994
不客氣,很高興幫助! – 2017-08-09 16:33:00
希望這會對你有所幫助。我認爲你可以使用DateTimeFormatter和LocalDateTime解析,如下面的例子。
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秒
如果你只想解析時間,你應該嘗試解析到LocalTime
。以下是代碼來實現這一點:
DateTimeFormatter parseFormat = new DateTimeFormatterBuilder().appendPattern("hh[:mm]a").toFormatter();
LocalTime localTime = LocalTime.parse(timeValue, parseFormat);
這隻適用於時間準確的尊重格式hh:mma,如12:30 AM,但不適用於上午5:00或下午2:12 ... – jeanr
是的,你是對的。 –
這不是'LocalDateTime',那只是一個'LocalTime'。 – Kayaman
我很抱歉。讓我重述一下。 – SVCS1994