私は周辺機器に書き込むためにCore Bluetoothを使用しています。UNIXのタイムスタンプをNSDataオブジェクトに変換するには?
// Write timestamp to paired peripheral
NSDate* measureTime = [NSDate date];
NSDateFormatter* usDateFormatter = [NSDateFormatter new];
NSLocale* enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[usDateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.000'Z'"];
[usDateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[usDateFormatter setLocale:enUSPOSIXLocale]; // Should force 24hr time regardless of settings value
NSString *dateString = [usDateFormatter stringFromDate:measureTime];
NSDate* startTime = [usDateFormatter dateFromString:dateString];
uint32_t timestamp = [startTime timeIntervalSince1970];
NSData *timestampData = [NSData dataWithBytes:×tamp length:sizeof(timestamp)]; // <- Troublemaker
[pairedPeripheral writeValue:timestampData forCharacteristic:currentCharacteristic type:CBCharacteristicWriteWithResponse];
ここで問題です:
私の32ビットのタイムスタンプは、正しい値を返します、しかし、ときに私そうようにすることを、私はセンサに現在のUnixタイムスタンプを送りたい、と私はやることを試みてきましたそれをNSDataに変換すると、周辺機器は次のような24時間のクロック値として読み取ります。 "16:42:96"
ここでエラーが生じますか?
EDIT
私は、誰かがそれが不要であることを述べたように、NSDateFormatterを取り除くために、コードを変更しました。私はまだ同じ結果を取得しているようだ:
// Write timestamp to paired peripheral
NSDate* measureTime = [NSDate date];
uint64_t timestamp = [measureTime timeIntervalSince1970];
NSData *timestampData = [NSData dataWithBytes:×tamp length:sizeof(timestamp)]; // <- Troublemaker
[pairedPeripheral writeValue:timestampData forCharacteristic:currentCharacteristic type:CBCharacteristicWriteWithResponse];
"周辺機器の読み取り"とはどういう意味ですか? 「16:42:96」はどこで取得できますか? – Kreiri
ライトブルーを使用して特性値を読み取ったとき、その数値は「16:42:96」と表示されますが、本当に欲しいのは「149562 ....」というUNIXタイムスタンプです –