我们正在构建一个应用程序,该应用程序需要在设备上存储条目的日期,该应用程序将是国际化的,因此我们遇到了两个困境/挑战。
用户偏好
如果用户选择 12 小时而不是 24 小时格式,我们会从 [NSDate date] 返回一个像这样的日期 2012-07-17 11:26:03 AM 在 SQLite 数据库中排序不是最佳的,因为我们无法存储它作为一个日期。
用户区域设置
通常这是可以的,但是在这里我们有一个很棒的东西,叫做英国夏季。它在一个周期中每 10 月 25 日至 30 日增加一个小时,并在一个周期中每 3 月 25 日至 31 日删除一个小时,因此如果一年中的 8 个月没有进行调整,则时间落后一小时。
我需要实现的是一个一致的日期,格式如下:2012-07-17 11:26:03,无论设备位于何处,还要考虑 GMT+1 的位置。
任何帮助都是极好的。
编辑*
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm";
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT+01:00"];
[dateFormatter setTimeZone:gmt];
NSString *timeStamp = [dateFormatter stringFromDate:[NSDate date]];
NSDate *localDate = [dateFormatter dateFromString:timeStamp];
NSLocale* currentLocale = [NSLocale currentLocale];
NSString* countryCode = [currentLocale objectForKey:NSLocaleCountryCode];
NSLog(@"Country Code: %@", countryCode);
NSLog(@"Current Loacle: %@", currentLocale);
if(([countryCode isEqualToString: @"GB"])){
NSDate *mydate = [NSDate date];
NSDate *fiddlyFoo = [mydate dateByAddingTimeInterval:3600];
NSLog(@"Print GMT +1 %@",fiddlyFoo);
} else {
NSLog(@"Print GMT Local %@",localDate);
}