[英]How to convert a given time (String) to a LocalTime?
我将要求用户输入特定的时间:10 AM、12:30PM、2:47PM、1:09AM、5PM,等等。我将使用Scanner
来获取用户的输入。
如何将String
解析/转换为LocalTime
对象? Java中是否有任何内置函数可以使我做到这一点?
只需使用java.time.format.DateTimeFormatter
:
DateTimeFormatter parser = DateTimeFormatter.ofPattern("h[:mm]a");
LocalTime localTime = LocalTime.parse("10AM", parser);
解释模式:
h
:一天中的上午/下午(从1到12),用1或2位数字 []
:可选部分的定界符(其中的所有内容都是可选的) :mm
:a :
字符,后跟2位数字的分钟 a
:AM / PM的代号 这适用于所有输入。
如果只想解析时间,则应尝试解析到LocalTime
。 以下是实现此目的的代码:
DateTimeFormatter parseFormat = new DateTimeFormatterBuilder().appendPattern("hh[:mm]a").toFormatter();
LocalTime localTime = LocalTime.parse(timeValue, parseFormat);
希望这会帮助你。 我认为您可以使用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:10:56 PM
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.