デバイスにエントリの日付を保存する必要があるアプリを作成しています。アプリは国際的なものになるため、2つのジレンマ/課題に直面します。
ユーザー設定
ユーザーが24時間形式よりも12時間形式を選択した場合、[NSDatedate]から次のような日付が返されます2012-07-1711:26:03 AM SQLiteデータベースでの並べ替えには、保存できないため最適ではありません日付として。
ユーザーロケール
通常、これは問題ありませんが、ここでは、英国の夏と呼ばれる素晴らしいものがあります。これは、10月25日から30日までのサイクルで1時間を追加し、3月25日から31日までのサイクルで1時間を削除するため、1年の8か月間調整が行われない場合、時間は1時間遅れます。
私が達成する必要があるのは、次のようにフォーマットされた一貫した日付です: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);
}