-1

私のサーバーはこのような日付を与えます

07/22/2013 06:13:04 PM UTC +05:30

デバイスのタイムゾーンに変換したいのですが、デバイスのタイムゾーンがLocal Time Zone (Asia/Kolkata (GMT+05:30) offset 19800)この日付よりも

Googleで検索し、多くのコードを試してみましたが、運がありません. 助けてください。

4

1 に答える 1

0

dateFormat が日付文字列の形式と一致しません。Unicode Date Format Patternsについて読んでください。そしてその後試してみてください@"yyyy-MM-dd'T'HH:mm:ssZZZ"

しかし、とにかく何か間違ったことをしようとしていると思います。NSDate は時点であり、世界中のすべての場所で同じです。ソースが異なるタイムゾーンにあるという理由だけで、新しい NSDate を計算する必要はありません。

上記の dateFormat を使用して、別の NSDate と直接比較します。

おそらく次のようなものです:

NSString *serverTime = @"2012-01-11T06:17:39+0000";

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"];
NSDate* sourceDate = [dateFormatter dateFromString:serverTime];
if (!sourceDate) {
    NSLog(@"Wrong NSDateFormatter format!");
}
else {
    NSDate *date24HoursAgo = [NSDate dateWithTimeIntervalSinceNow:-(24*60*60)];
    NSLog(@"%@", sourceDate);
    NSLog(@"%@", date24HoursAgo);
    if ([sourceDate compare:date24HoursAgo] == NSOrderedAscending) {
        NSLog(@"Timestamp from server is older than 24 hours.");
    }
}
于 2013-07-22T13:39:38.550 に答える