Java:单独的时间数字

时间:2012-03-14 19:52:34

标签: java date time split

我正在尝试将hh:mm类型的设置中的每个数字分成单个数字。所以如果时间是8:24,我会[0,8,2,4]。我该怎么做?

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);
}

Compile and run working code here.

答案 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]