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

时间:2015-12-31 18:50:01

标签: java arrays split calendar

我希望制作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的内容。

2 个答案:

答案 0 :(得分:2)

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?

答案 1 :(得分:0)

嗯,我想你要找的是这样的

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