我们正在构建一款应用程序,需要在设备上存储日期才能进入该应用程序,该应用程序将具有国际性,因此我们遇到了两个困境/挑战。IOS NSDateFormatter问题
用户首
如果用户选择我们从[NSDate的日期]这样2012-07-17上午11时26分03秒的日期返回的12小时rahter超过24小时格式这对于在SQLite数据库中排序并不理想,因为我们无法将其存储为日期。
用户区域
通常,这是好的但是在这里blighty我们有一个叫做英国夏季一wonderfult事情。每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);
}
谢谢但是,当我将字符串转换回日期时,我再次获得AM/PM附录,我需要停止。我们需要这个作为NSDate,因为我们在应用程序的其他地方正在做一些东西 – 2012-07-17 12:04:47
那么,上面的代码给你一个表示,你可以排序,哪些是基于GMT的。如果您需要将其转换为想要呈现给用户的字符串,那么会出现一个反向编码,它会给您一个NSDate - 是您想要的吗? – 2012-07-17 12:50:14
我很抱歉,我的目标只是为了获得24小时日期格式,无论时区或区域设置如何,但对BST有调整 – 2012-07-17 12:55:11