Comment obtenir la date d'aujourd'hui dans le format grégorien lorsque le calendrier de téléphone est non grégorien?

StackOverflow https://stackoverflow.com/questions/6355405

  •  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!

Était-ce utile?

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];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top