Zos*_*619 1 java regex time timeofday
String time = "Thu Dec 22 01:12:22 UTC 2022";
如何01:12:22
使用 java regex 获取此处的 HH:MM:SS ()。所以输出应该是 01:12:22 我正在使用下面的代码,但它不起作用。
System.out.println("Hello, World!");
String time = "Thu Dec 22 01:12:22 UTC 2022";
String pattren = "(?:2[0-3]|[01][0-9]):[0-5][0-9]:[0-5][0-9]";
Pattern p = Pattern.compile(pattren);
Matcher m = p.matcher(time);
System.out.println("h");
while (m.find()) {
System.out.println(m.group(1));
}
Run Code Online (Sandbox Code Playgroud)
正如 anubhava 和 Basil Bourque 所建议的,这里使用的最佳工具是日期时间 API。
import java.time.LocalTime;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
class Main {
public static void main(String[] args) {
String strDateTime = "Thu Dec 22 01:12:22 UTC 2022";
DateTimeFormatter parser = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss VV uuuu", Locale.ENGLISH);
ZonedDateTime zdt = ZonedDateTime.parse(strDateTime, parser);
LocalTime time = zdt.toLocalTime();
System.out.println(time);
// Or get the string representation
String strTime = time.toString();
System.out.println(strTime);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
01:12:22
01:12:22
Run Code Online (Sandbox Code Playgroud)
Ole VV 的一条重要建议:如果时间子字符串的秒数为零01:12:00
,则默认实现LocalTime#toString
将删除尾随:00
。这样,您还需要一个格式化程序来格式化时间。
class Main {
public static void main(String[] args) {
String strDateTime = "Thu Dec 22 01:12:00 UTC 2022";
DateTimeFormatter parser = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss VV uuuu", Locale.ENGLISH);
ZonedDateTime zdt = ZonedDateTime.parse(strDateTime, parser);
LocalTime time = zdt.toLocalTime();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss", Locale.ENGLISH);
String strTime = time.format(formatter);
System.out.println(strTime);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
01:12:00
Run Code Online (Sandbox Code Playgroud)
从Trail: Date Time中了解有关现代日期时间 API 的更多信息。