将NSDates从一个日历转换为另一个日历

时间:2014-09-29 13:05:10

标签: ios nsdate nscalendar

有很多问题都有相同的标题,但没有人回答我的问题。我希望能够将表示伊斯兰日历的NSString转换为在公历中显示该日期的NSDate。这是我的代码,但它仍然在伊斯兰日历中返回NSDate。

- (NSDate*) convertToNSDateFromString : (NSString *)dateString : (NSString *)dateFormat
{
//Format the Calendar
NSDateFormatter *f = [[NSDateFormatter alloc] init];
NSCalendar *gregorian = [[NSCalendar alloc]
                         initWithCalendarIdentifier:NSGregorianCalendar];
[f setCalendar:gregorian];
[f setDateStyle:NSDateFormatterLongStyle];
[f setDateFormat:dateFormat];

NSDate *date = [f dateFromString:dateString];

return date;
}

1 个答案:

答案 0 :(得分:3)

NSDate没有日历。这实际上是代表某个时间的时间戳。尝试阅读EPOCH以获得更好的理解。

无论如何,NSDate可以使用timeIntervalSince1970从参考时间开始以秒为单位给出一个持续时间,这将从UTC时间1.1.1970返回几秒钟,这实际上就是{{1}是的。这意味着根本没有神奇的工具可以处理这个对象。

此对象旁边需要的是一个日历,NSDate应该可以解决问题。此日历可以帮助您转换时间表示,但不能转换时间本身。因此,您只能将时间戳转换为日期的不同表示,或者您可以从日期的某个表示中获取时间戳。为什么会这样呢是因为大部分时间你都可以在地球上找到24个位置,由于时区的原因,每个位置都有不同的当前时间...这不是我认为你不知道这个,只是试图解释为什么日期工具如此复杂且难以使用。