Objective c 如何获得今天';当电话日历为非公历时,是否使用公历格式?

Objective c 如何获得今天';当电话日历为非公历时,是否使用公历格式?,objective-c,gregorian-calendar,Objective C,Gregorian Calendar,提供当前日期 但是,如果手机日历不是公历(仿真器上也有日语和佛教日历),则当前日期将不是公历 现在的问题是如何转换为公历日期,或者确保它从一开始就是公历格式。这对于某些服务器通信至关重要 谢谢大家! NSDate只代表一个时间点,本身没有格式 要将NSDate格式化为例如字符串,应使用NSDateFormatter。它有一个日历属性,如果将该属性设置为公历的实例,则输出的格式将匹配公历样式 NSDate *now = [[NSDate alloc] init]; 选择的答案实际上我无法比较

提供当前日期

但是,如果手机日历不是公历(仿真器上也有日语和佛教日历),则当前日期将不是公历

现在的问题是如何转换为公历日期,或者确保它从一开始就是公历格式。这对于某些服务器通信至关重要


谢谢大家!

NSDate只代表一个时间点,本身没有格式

要将NSDate格式化为例如字符串,应使用NSDateFormatter。它有一个日历属性,如果将该属性设置为公历的实例,则输出的格式将匹配公历样式

NSDate *now = [[NSDate alloc] init];  

选择的答案实际上我无法比较。仅显示对我的项目来说是不够的

我终于想出了一个解决方案,covert(NSDate)currentDate->gregorianDate 然后我们可以比较这些日期

请记住,NSDates应该是临时使用的(它不附带任何日历)


如何修改它,使其将公历日期作为NSDate而不是NSString()返回
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];
    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];