考虑到区域时间分隔符,如何将HH:mm解析为分钟数?

我有一个’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 LocalTimeextract 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)

上一篇:在Android中使用自定义语言环境扩展视图


下一篇:CentOS7.5查看、修改系统语言(中英文)