当电话日历是非格里高利时,如何以格里高利格式获取今天的日期?

Van*_*nja 4 objective-c gregorian-calendar

NSDate *now = [[NSDate alloc] init];  
Run Code Online (Sandbox Code Playgroud)

给出当前日期.

但是,如果电话日历不是格里高利(在模拟器上还有日语和佛教徒),则当前日期将不是格里高利.

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

谢谢!

Mor*_*ast 14

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];
Run Code Online (Sandbox Code Playgroud)