私のサーバーはこのような日付を与えます
07/22/2013 06:13:04 PM UTC +05:30
デバイスのタイムゾーンに変換したいのですが、デバイスのタイムゾーンがLocal Time Zone (Asia/Kolkata (GMT+05:30) offset 19800)
この日付よりも
Googleで検索し、多くのコードを試してみましたが、運がありません. 助けてください。
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.");
}
}