如何从代码默认使用UTC作为默认时区的IOS应用程序。 换句话说,如果从我的应用程序的任何地方我初始化NSDate,我希望它使用UTC作为时区。我不想为每个创建的NSdate对象指定时区。
我也不想更改设备上的任何偏好。
答案 0 :(得分:0)
您未指定NSDate
的时区。这只是时间线上的一点。
NSDate对象代表单个时间点。日期对象(...) 代表一个不变的时间点。 - NSDate Class Reference
你需要照顾好日期。因此,在创建日期的字符串表示时,请为NSDateFormatter
设置所需的时区。这是指定时区的时间。
答案 1 :(得分:0)
我认为制作NSDate
类别是最好的。并使用需要的类别
类似
.h fille
@interface NSDate (UTCDate)
+(NSDate *) UTCTDateForLocalDate:(NSDate *)localDate;
@end
.m文件
@implementation NSDate (UTCDate)
+(NSDate *) UTCTDateForLocalDate:(NSDate *)localDate{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"];
NSString *localDateString = [dateFormatter stringFromDate:localDate];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
[dateFormatter setTimeZone:timeZone];
NSDate *UTCDate = [dateFormatter dateFromString:localDateString];
return UTCDate;
}
@end
答案 2 :(得分:0)
这是我最终解决问题的方式:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//default app to use UTC
[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
}