0

[[NSDate date] timeIntervalSince1970] と UIWebView の Date().getTime() を出力するテストを実行しましたが、数秒ずれているようです。最初はメインスレッドで両方を印刷しているためだと思っていましたが、数秒の遅延は発生しませんか? これが役立つ場合の私のテストコードです。

- (void)viewDidLoad
{
    [NSTimer scheduledTimerWithTimeInterval:0.0001 target:self selector:@selector(debugTime) userInfo:nil repeats:YES];
    [super viewDidLoad];
}
- (void)debugTime
{
    NSLog(@"%1.6f", [[NSDate date] timeIntervalSince1970]);
}

また、UIWebView は、次のコードを含むローカル HTML ファイルを読み込みます。

$(window).load(function () {
    window.setInterval("time()",1/100000);
});
function time() {
    var d = new Date();
    console.log(d.getTime()/1000);
}

Safari の Web Inspector でコンソールを調べます。

iOS プリント: 1376552964.625462

Javascript プリント: 1376552967.63

ネイティブの Objective-C と UIWebView の両方で時刻を同期する方法が必要です。これを行う方法はありますか?

4

1 に答える 1

0

両方のタイムスタンプ文字列を日付に変換してみました。

iOS プリント==>2013-08-15 07:49:24 +0000

Javascript プリント ==> 2013-08-15 07:49:27 +0000

コードを使用して、

NSString * timeStampString = @"1376552967.63";
NSTimeInterval _interval=[timeStampString doubleValue];
NSDate *date = [NSDate dateWithTimeIntervalSince1970:_interval];
NSLog(@"%@", date);

webview がページをロードし、javascript の日付関数を実行するのに時間がかかるためだと思います。私がこれを言っている理由は、2 つ (iOS と javascript) の時間差がわずか 3 秒であるためです..

詳細については、こちらをご覧ください==>タイムスタンプ ベースの同期の一般的な落とし穴は何ですか?

于 2013-08-15T08:09:56.360 に答える