我正在尝试将hh:mm类型的设置中的每个数字分成单个数字。所以如果时间是8:24,我会[0,8,2,4]。我该怎么做?
答案 0 :(得分:1)
从Date对象获取小时和分钟后,您可以使用mod
和%
运算符计算各个数字。 http://mindprod.com/jgloss/modulus.html
答案 1 :(得分:1)
您需要使用HH:mm日期模式格式化输入文本,删除所有非数字字符,最后将字符串拆分为字符。
String inputTime = "8:24";
DateFormat df = new SimpleDateFormat("HH:mm");
String formattedInputTime = df.format(df.parse(inputTime));
String timeDigits = formattedInputTime.replaceAll("[^\\d]", "");
char[] timeDigitTokens = timeDigits.toCharArray();
for (char timeDigitToken : timeDigitTokens) {
System.out.println(timeDigitToken);
}
答案 2 :(得分:1)
无需删除上面建议的非数字字符,只是不要将它们放在格式化日期中。此外,不需要调用toCharArray,因为您可以通过String.charAt方法直接获取每个字符:
String s = new SimpleDateFormat("mmss").format(new Date());
System.out.println(s.charAt(0));
System.out.println(s.charAt(1));
System.out.println(s.charAt(2));
System.out.println(s.charAt(3));
答案 3 :(得分:0)
根据Chris Nava的想法(首先提出他的答案)并假设你想要int
个数字而不是char
:
public class TimeSplit {
public static void main(String[] args) throws ParseException {
printSplit("8:24"); // [0, 8, 2, 4]
printSplit("10:22"); // [1, 0, 2, 2]
printSplit("13:57"); // [0, 1, 5, 7] because of 12h
}
private static void printSplit(String time) throws ParseException {
System.out.println(time + " -> " + Arrays.toString(split(time)));
}
private static int[] split(String time) throws ParseException {
DateFormat fmt = new SimpleDateFormat("hh:mm"); // 12h, use HH for 24h
Calendar calendar = Calendar.getInstance();
calendar.setTime(fmt.parse(time));
return split(calendar);
}
private static int[] split(Calendar time) {
int hours = time.get(Calendar.HOUR); // 12h, use HOUR_OF_DAY for 24h
int minutes = time.get(Calendar.MINUTE);
int[] digits = new int[4];
digits[0] = hours / 10;
digits[1] = hours % 10;
digits[2] = minutes / 10;
digits[3] = minutes % 10;
return digits;
}
}
输出:
8:24 -> [0, 8, 2, 4]
10:22 -> [1, 0, 2, 2]
13:57 -> [0, 1, 5, 7]