将应用程序设置为全局使用UTC

时间:2014-07-24 17:52:26

标签: ios objective-c nsdate utc

如何从代码默认使用UTC作为默认时区的IOS应用程序。 换句话说,如果从我的应用程序的任何地方我初始化NSDate,我希望它使用UTC作为时区。我不想为每个创建的NSdate对象指定时区。

我也不想更改设备上的任何偏好。

3 个答案:

答案 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"]];
}