2

タイムスタンプ (NSTimeInterval) を日付形式に変換しようとしています。正しい現在の日付 (日月年) を取得していますが、時刻が正しくありません。これが私のコードです。現在の時刻を正しく取得するにはどうすればよいですか? 前もって感謝します。

- (NSString*)formatTimestamp:(NSTimeInterval)timeStamp
{
    NSDate *date = [NSDate dateWithTimeIntervalSinceNow:timeStamp];
    NSDateFormatter *formatter=[[NSDateFormatter alloc]init];
    [formatter setDateFormat:@"dd-MM-yyyy HH:mm:ss:SSS zzz"];
    NSString *dateString=[formatter stringFromDate:date];
    [formatter release];
    return dateString;
}
4

2 に答える 2

3

たぶん私は何かを誤解しましたが、あなたの比較は正しくないと思います...

NSLogの時刻は現在の時刻で、UIEventtimestampシステムの起動からの秒数です(そして で現在の時刻に追加します[NSDate dateWithTimeIntervalSinceNow:])...

の絶対日時がUIEvent必要な場合は、最初にシステムの起動日を取得する必要がありますが、これは簡単ではありません...そして を追加しUIEventますtimestamp

使用できます

lastRebootTime = [[NSDate date] addTimeInterval:-[self secondsSinceLastReboot]];

- (NSTimeInterval)secondsSinceLastReboot
{
    // get the timebase info -- different on phone and OSX
    mach_timebase_info_data_t info;
    mach_timebase_info(&info);

    // get the time
    uint64_t absTime = mach_absolute_time();

    // apply the timebase info
    absTime *= info.numer;
    absTime /= info.denom;

    // convert nanoseconds into seconds
    return (NSTimeInterval) ((double)absTime / 1000000000.0);
}

参照。iPhone UIEvent タイムスタンプの生成

于 2012-05-16T08:45:06.477 に答える
1

タイムゾーンを設定する必要がありますか?

NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"YourTimeZone"]; [fopmatter setTimeZone:timeZone];

于 2012-05-15T22:17:15.733 に答える