Ios 将应用程序设置为全局使用UTC
如何使IOS应用程序从默认代码使用UTC作为默认时区。 换句话说,如果我在应用程序的任何地方初始化NSDate,我希望它使用UTC作为时区。我不想为创建的每个NSdate对象指定时区 我也不想更改设备上的任何首选项。您没有为NSDate指定时区。这只是时间线上的一个点 NSDate对象表示单个时间点。日期对象。。。 表示一个不变的时间点Ios 将应用程序设置为全局使用UTC,ios,objective-c,nsdate,utc,Ios,Objective C,Nsdate,Utc,如何使IOS应用程序从默认代码使用UTC作为默认时区。 换句话说,如果我在应用程序的任何地方初始化NSDate,我希望它使用UTC作为时区。我不想为创建的每个NSdate对象指定时区 我也不想更改设备上的任何首选项。您没有为NSDate指定时区。这只是时间线上的一个点 NSDate对象表示单个时间点。日期对象。。。 表示一个不变的时间点 你必须注意介绍日期。因此,在创建日期的字符串表示形式时,为NSDateFormatter设置所需的时区。这是您指定时区的时候。我认为对NSDate进行分类是最好
你必须注意介绍日期。因此,在创建日期的字符串表示形式时,为NSDateFormatter设置所需的时区。这是您指定时区的时候。我认为对NSDate进行分类是最好的。并在需要时使用该类别 差不多 h.菲勒
@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
这就是我最终解决问题的方式:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//default app to use UTC
[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
}