我有一个’HH:mm’格式的输入字符串,其中时间分隔符取决于语言环境设置(例如,美国的’10:45’或意大利的’10 .45′).我需要将其转换为分钟数.
这是我想出的:
String timeSeparator = getTimeSeparator(locale);
String[] duration = durationString.split(Pattern.quote(timeSeparator));
int minutes = Integer.valueOf(duration[0])*60 + Integer.valueOf(duration[1]);
从https://*.com/a/7612009/7753225获取的getTimeSeparator方法
有没有更简单的方法?例如使用“ java.time”.
解决方法:
在Java 8中,可以使用DateTimeFormatter.ofLocalizedTime
获取特定于语言环境的日期时间格式化程序.然后,您可以将其用于parse the string into a LocalTime
和extract the minute field.
public static int getMinute(String timeString, Locale locale) {
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT)
.withLocale(locale);
LocalTime time = LocalTime.parse(timeString, formatter);
return time.getHour()*60 + time.getMinute();
}
例:
System.out.println(getMinute("10.47", new Locale("fi"))); // 647
System.out.println(getMinute("11:23", Locale.ROOT)); // 683
如果您不关心时间分隔符,可以改用固定模式.
public static int getMinute(String timeString, Locale locale) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH[:][.]mm", locale);
LocalTime time = LocalTime.parse(timeString, formatter);
return time.getHour()*60 + time.getMinute();
}
([…]表示可选,因此将匹配HH:mm,HH.mm,HHmm和HH:.mm)