Comment obtenir la date d'aujourd'hui dans le format grégorien lorsque le calendrier de téléphone est non grégorien?
-
28-10-2019 - |
Question
NSDate *now = [[NSDate alloc] init];
donne la date actuelle.
Toutefois, si le calendrier de téléphone n'est pas Grégorien (sur l'émulateur il y a aussi japonais et bouddhiste), la date ne sera pas grégorien.
La question est de savoir comment convertir à une date grégorienne ou assurez-vous qu'il sera dans le format grégorien depuis le début. Ceci est crucial pour une communication du serveur.
Merci!
La solution
NSDate représente juste un moment et n'a pas de format en lui-même.
Pour formater un NSDate à, par exemple une chaîne, vous devez utiliser NSDateFormatter. Il a une propriété civile, et si vous définissez cette propriété à une instance d'un calendrier grégorien, le format correspondra à un émis de style grégorien.
NSDate *now = [NSDate date];
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setCalendar:gregorianCalendar];
[formatter setDateStyle:NSDateFormatterFullStyle];
[formatter setTimeStyle:NSDateFormatterFullStyle];
NSString *formattedDate = [formatter stringFromDate:now];
NSLog(@"%@", formattedDate);
[gregorianCalendar release];
[formatter release];
Autres conseils
La réponse cueillies en fait je ne peux pas les comparer. que l'affichage ne suffit pas pour mon projet.
Je finalement arriver à une solution qui currentDate secrète (NSDate) -> gregorianDate alors nous pouvons comparer ces NSDates.
Rappelez-vous que les NSDates devraient être utilisés temporairement. (Il ne fixe pas avec un calendrier)
NSDate* currentDate = [NSDate date];
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *gregorianComponents = [gregorianCalendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:currentDate];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:[gregorianComponents day]];
[comps setMonth:[gregorianComponents month]];
[comps setYear:[gregorianComponents year]];
[comps setHour:[gregorianComponents hour]];
[comps setMinute:[gregorianComponents minute]];
[comps setSecond:[gregorianComponents second]];
NSCalendar *currentCalendar = [NSCalendar autoupdatingCurrentCalendar];
NSDate *today = [currentCalendar dateFromComponents:comps];