Java: отдельные цифры времени - PullRequest
0 голосов
/ 14 марта 2012

Я пытаюсь разделить каждое число в настройках типа чч: мм на отдельные цифры. Поэтому, если бы время было 8:24, у меня было бы [0, 8, 2, 4]. Как бы я это сделал?

Ответы [ 4 ]

1 голос
/ 15 марта 2012

Нет необходимости удалять нечисловые символы, как указано выше, просто не помещайте их в форматированную дату для начала. Кроме того, нет необходимости вызывать 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));
1 голос
/ 15 марта 2012

Вам необходимо отформатировать введенный текст с помощью шаблона даты в формате ЧЧ: мм, удалить все нечисловые символы и, наконец, разбить строку на символы.

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

Скомпилируйте и запустите рабочий код здесь.

1 голос
/ 15 марта 2012

Как только вы получите часы и минуты из вашего объекта Date, вы можете использовать операторы mod и % для вычисления отдельных цифр. http://mindprod.com/jgloss/modulus.html

0 голосов
/ 15 марта 2012

Основано на идее Криса Навы (сначала опишите его ответ) и предполагая, что вы хотите 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]
...