【发布时间】:2012-07-17 10:38:38
【问题描述】:
我们正在构建一个需要在设备上存储条目的日期的应用程序,该应用程序将是国际化的,因此我们遇到了两个困境/挑战。
-
用户偏好
如果用户选择 12 小时而不是 24 小时格式,我们会从 [NSDate date] 返回一个像这样的日期 2012-07-17 11:26:03 AM 在 SQLite 数据库中排序不是最佳的,因为我们不能将其存储为日期。
-
用户区域设置
通常这没问题,但在 Blighty,我们有一个很棒的东西,叫做英国夏季。 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);
}
【问题讨论】:
标签: ios datetime date nsdate nsdateformatter