NSDate *now = [[NSDate alloc] init];
给出当前日期。
但是,如果手机日历不是公历(模拟器上还有日语和佛教),则当前日期不会是公历。
现在的问题是如何转换为公历日期或确保它从一开始就是公历格式。这对于某些服务器通信至关重要。
谢谢!
NSDate *now = [[NSDate alloc] init];
给出当前日期。
但是,如果手机日历不是公历(模拟器上还有日语和佛教),则当前日期不会是公历。
现在的问题是如何转换为公历日期或确保它从一开始就是公历格式。这对于某些服务器通信至关重要。
谢谢!
NSDate 只代表一个时间点,本身没有格式。
要将 NSDate 格式化为例如字符串,您应该使用 NSDateFormatter。它有一个日历属性,如果将此属性设置为公历的实例,则输出格式将匹配公历样式。
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 -> gregorianDate 的解决方案,然后我们可以比较这些 NSDates。
请记住,NSDates 应该是临时使用的。(它不附加任何日历)
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];