gpt4 book ai didi

ios - [NSDate date] 在多个设备中的不同结果

转载 作者:可可西里 更新时间:2023-11-01 04:25:30 27 4
gpt4 key购买 nike

首先,我不得不说我在日期和时间设置中设置了自动设置,并且每台设备的时区都相同。所以我使用 [NSDate date] 获取以毫秒为单位的时间戳,然后编码为 NSData 并发送到另一台设备。在接收器上,数据正在被解码并减去新的 [NSDate date]。这样我就可以获得发送和接收消息所需的总时间。我认为这是因为当发送方是 iPhone 4 iOS6 并且接收方是 iPhone 5 iOS7 时,接收方的时间戳比发送方早。我不知道为什么?也许 [NSData date] 不是那种操作最可靠的类?我使用 GCDAsyncUdpSocket 发送/接收 UDP。

代码发送者

NSData *data2 = [self createRandomNSData:8192];
NSMutableData *dataToSend =[NSMutableData data];
[dataToSend appendBytes:&tag length:sizeof(int)];
long long currentTimeStamp = (long long)([[NSDate date] timeIntervalSince1970]*1000.0);
[dataToSend appendBytes:&currentTimeStamp length:sizeof(long long)];
[dataToSend appendData:data2];
NSLog(@"%i || %lld || %lu",tag, currentTimeStamp,(unsigned long)[dataToSend length]);
[_udpSocket sendData:dataToSend toHost:@"230.0.0.1" port:_port withTimeout:-1 tag:tag];
tag++;

代码接收者

char* dataBytes = [data bytes];
int inTag;
long long inCurrentTimeStamp;
[data getBytes:&inTag length:sizeof(int)];
[data getBytes:&inCurrentTimeStamp range:NSMakeRange(sizeof(int), sizeof(long long))];
long long currentTimeStamp = (long long)([[NSDate date] timeIntervalSince1970]*1000.0);
long long timeStampDiff = currentTimeStamp - inCurrentTimeStamp;
self.delay = timeStampDiff;
NSLog(@"%i || %lld || %lu",inTag, timeStampDiff,(unsigned long)[data length]);

最佳答案

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss"];
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
NSString *strSystemTime = [dateFormatter stringFromDate:[NSDate date]];

我遇到了同样的问题并通过设置 NSLocale 解决了它。我希望这个解决方案也适用于您。

关于ios - [NSDate date] 在多个设备中的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20425868/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com