私はアンドロイド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;
}