我的服务器给出这样的日期
07/22/2013 06:13:04 PM UTC +05:30
我想将其转换为设备时区。就像我的设备时区Local Time Zone (Asia/Kolkata (GMT+05:30) offset 19800)
不是这个日期的样子
在 Google 上搜索并尝试了这么多代码,但没有任何运气。请帮助我。
您的 dateFormat 与日期字符串的格式不匹配。阅读有关Unicode 日期格式模式的信息。然后尝试@"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.");
}
}