阅读日期和时间异常

时间:2015-04-17 10:33:38

标签: java android

我想从使用joda的设备上读取日期和时间。 我正在进行BCD to String转换,我试图像这样读取日期和时间:

String s = BCDtoASCII(resultBuff, 6, 8, false);
DateTime dt = new DateTime
(
(Integer.parseInt(s.substring(0, 4))),  // year
(Integer.parseInt(s.substring(4, 2))),     // month
(Integer.parseInt(s.substring(6, 2))),     // day
(Integer.parseInt(s.substring(8, 2))),     // hour
(Integer.parseInt(s.substring(10, 2))),    // minute
(Integer.parseInt(s.substring(12, 2)))// seconds
);

但我得到了这个例外:

  

致命异常:Thread-14838       进程:com.calculator.gent.bluetoothcommuncation,PID:17683 java.lang.StringIndexOutOfBoundsException:length = 16; regionStart = 4; regionLength = -2       at java.lang.String.startEndAndLength(String.java:504)       在java.lang.String.substring(String.java:1333)

2 个答案:

答案 0 :(得分:2)

Javadoc中所述,第一个参数是起始索引,第二个参数是结束索引,而不是长度。

所以你必须做这样的事情:

Integer.parseInt(s.substring(4, 6));

答案 1 :(得分:0)

找到解决方案:

String s = BCDtoASCII(resultBuff, 6, 8, false);
DateTime dt = new DateTime
(
(Integer.parseInt(s.substring(0, 4))),  // year
(Integer.parseInt(s.substring(4, 6))),     // month
(Integer.parseInt(s.substring(6, 8))),     // day
(Integer.parseInt(s.substring(8, 10))),     // hour
(Integer.parseInt(s.substring(10, 12))),    // minute
(Integer.parseInt(s.substring(12, 14)))     // seconds
);