나는 안드로이드 BLE로 작업하고 있습니다.현재 시간은 32 비트 UNIX 타임 스탬프 및 시간 오프셋으로
특성에 쓰기가 필요 현재 시간은 32 비트 UNIX 타임 스탬프로 지정해야합니다. 그 후 UTC로부터의 현재 시간대 오프셋 (초)을 씁니다. 아마 문제는 32 바이트 배열로 커버하는 것이지만 나는 100 % 확실하지 않습니다.
나는 그것을했지만 뭔가 잘못되었습니다. 그것은 매우 빨리 상승하고 결국 0x7FFF, FFFF를 전달합니다. 즉, 타임 스탬프가 부호있는 정수 일 때 오버플로되고 음수가됩니다.
private byte[] getCurrentUnixTime() {
int unixTime = (int) (System.currentTimeMillis()/1000L);
byte[] currentDate = Converter.intTo32ByteArray(unixTime);
return currentDate;
}
private byte[] getCurrentTimeOffset() {
TimeZone tz = TimeZone.getDefault();
Date timeNow = new Date();
int offsetFromUtc = tz.getOffset(timeNow.getTime())/1000;
byte[] offsetFromUtcByteArray = Converter.intTo32ByteArray(offsetFromUtc);
return offsetFromUtcByteArray;
}
public static byte[] intTo32ByteArray(int number) {
byte[] byteArray = new byte[]{
(byte) (number >> 24),
(byte) (number >> 16),
(byte) (number >> 8),
(byte) number
};
return byteArray;
}