我希望制作hours
和minutes
数组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]
包含9
和minute[2]
9
的内容。
答案 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]);