如何将日期转换为 int 数组?

how to convert date to int array?

我想制作 hoursminutes 数组,19:49 应该包含

hours[0] = 1
hours[1] = 9
minutes[0] = 4
minutes[1] = 9

问题是当我执行代码时:

Calendar rightNow = Calendar.getInstance();
String hour[] = String.valueOf(rightNow.get(Calendar.HOUR_OF_DAY)).split("");
String minute[] = String.valueOf(rightNow.get(Calendar.MINUTE)).split("");

当我打印这个时

System.out.println(hour[0] + ""+hour[1] + ":" + minute[0] +""+minute[1]);

我有这个输出 1:4,但它应该是 19:49

更新:我正在使用 1.7 JDK 并形成我看到的 hour[2] 包含 9minute[2] 9.

pre-Java-8 中的问题是当我们 split(delimiter) 字符串像

delimiter[Data]delimiter[Data]delimiter[Data]

我们将得到结果数组

"", "[Data]", "[Data]", "[Data]"

在你的例子中,分隔符是空字符串"",空字符串不仅存在于字符之间,而且存在于字符串的开头和结尾。

要解决此问题,您可以使用 split("(?!^)"),只要它后面没有字符串开头 (^),它就会在每个位置拆分(不包括开头的空字符串)你的文字)。

在 Java 8 中,此行为已更改:Why in Java 8 split sometimes removes empty strings at start of result array?

嗯,我猜你要找的是这样的东西

    int[] hour = new int[2];
    int[] minute = new int[2];

    Calendar rightNow = Calendar.getInstance();

    int tempHour = rightNow.get(Calendar.HOUR_OF_DAY);
    int tempMin  = rightNow.get(Calendar.MINUTE);

    hour[0]   = (int)Math.floor(tempHour/10);
    hour[1]   = tempHour%10;

    minute[0] = (int)Math.floor(tempMin/10);
    minute[1] = tempMin%10;

    System.out.println(hour[0] + "" + hour[1] + ":" + minute[0] + "" + minute[1]);